W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
支持端:小程序 2.7.4, 云函數(shù) 0.8.1, Web
聚合階段。把指定的字段傳遞給下一個流水線,指定的字段可以是某個已經(jīng)存在的字段,也可以是計算出來的新字段。
project 的形式如下:
project({
<表達式>
})
表達式可以有以下格式:
格式 | 說明 |
---|---|
<字段>: <1 或 true > | 指定包含某個已有字段 |
_id: <0 或 false > | 舍棄 _id 字段 |
<字段>: <表達式> | 加入一個新字段,或者重置某個已有字段 |
<字段>: <0 或 false > | 舍棄某個字段(如果你指定舍棄了某個非 _id 字段,那么在此次 project 中,你不能再使用其它表達式) |
_id 字段是默認包含在輸出中的,除此之外其他任何字段,如果想要在輸出中體現(xiàn)的話,必須在 project 中指定; 如果指定包含一個尚不存在的字段,那么 project 會忽略這個字段,不會加入到輸出的文檔中;
如果你在 project 中指定排除某個字段,那么其它字段都會體現(xiàn)在輸出中; 如果指定排除的是非 _id 字段,那么在本次 project 中,不能再使用其它表達式;
你可以使用一些特殊的表達式加入新的字段,或重置某個已有字段。
有時有些字段處于多層嵌套的底層,我們可以使用點記法:
"contact.phone.number": <1 or 0 or 表達式>
也可以直接使用嵌套的格式:
contact: { phone: { number: <1 or 0 or 表達式> } }
假設(shè)我們有一個 articles 集合,其中含有以下文檔:
{
"_id": 666,
"title": "This is title",
"author": "Nobody",
"isbn": "123456789",
"introduction": "......"
}
下面的代碼使用 project,讓輸出只包含 _id、title 和 author 字段:
db.collection('articles')
.aggregate()
.project({
title: 1,
author: 1
})
.end()
輸出如下:
{ "_id" : 666, "title" : "This is title", "author" : "Nobody" }
_id 是默認包含在輸出中的,如果不想要它,可以指定去除它:
db.collection('articles')
.aggregate()
.project({
_id: 0, // 指定去除 _id 字段
title: 1,
author: 1
})
.end()
輸出如下:
{ "title" : "This is title", "author" : "Nobody" }
我們還可以指定在輸出中去掉某個非 _id 字段,這樣其它字段都會被輸出:
db.collection('articles')
.aggregate()
.project({
isbn: 0, // 指定去除 isbn 字段
})
.end()
輸出如下,相比輸入,沒有了 isbn 字段:
{
"_id" : 666,
"title" : "This is title",
"author" : "Nobody",
"introduction": "......"
}
假設(shè)我們有一個 students 集合,其中包含以下文檔:
{
"_id": 1,
"name": "小明",
"scores": {
"chinese": 80,
"math": 90,
"english": 70
}
}
下面的代碼,我們使用 project,在輸出中加入了一個新的字段 totalScore:
const { sum } = db.command.aggregate
db.collection('students')
.aggregate()
.project({
_id: 0,
name: 1,
totalScore: sum([
"$scores.chinese",
"$scores.math",
"$scores.english"
])
})
.end()
輸出為:
{ "name": "小明", "totalScore": 240 }
假設(shè)我們有一個 points 集合,包含以下文檔:
{ "_id": 1, "x": 1, "y": 1 }
{ "_id": 2, "x": 2, "y": 2 }
{ "_id": 3, "x": 3, "y": 3 }
下面的代碼,我們使用 project,把 x 和 y 字段,放入到一個新的數(shù)組字段 coordinate 中:
db.collection('points')
.aggregate()
.project({
coordinate: ["$x", "$y"]
})
.end()
輸出如下:
{ "_id": 1, "coordinate": [1, 1] }
{ "_id": 2, "coordinate": [2, 2] }
{ "_id": 3, "coordinate": [3, 3] }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: