W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
支持端:小程序 2.7.4, 云函數(shù) 0.8.1, Web
聚合階段。添加新字段到輸出的記錄。經(jīng)過 addFields 聚合階段,輸出的所有記錄中除了輸入時帶有的字段外,還將帶有 addFields 指定的字段。
addFields 等同于同時指定了所有已有字段和新增字段的 project 階段。
addFields 的形式如下:
addFields({
<新字段>: <表達(dá)式>
})
addFields 可指定多個新字段,每個新字段的值由使用的表達(dá)式?jīng)Q定。
如果指定的新字段與原有字段重名,則新字段的值會覆蓋原有字段的值。注意 addFields 不能用來給數(shù)組字段添加元素。
假設(shè)集合 scores 有如下記錄:
{
_id: 1,
student: "Maya",
homework: [ 10, 5, 10 ],
quiz: [ 10, 8 ],
extraCredit: 0
}
{
_id: 2,
student: "Ryan",
homework: [ 5, 6, 5 ],
quiz: [ 8, 8 ],
extraCredit: 8
}
應(yīng)用兩次 addFields,第一次增加兩個字段分別為 homework 和 quiz 的和值,第二次增加一個字段再基于上兩個和值求一次和值。
const $ = db.command.aggregate
db.collection('scores').aggregate()
.addFields({
totalHomework: $.sum('$homework'),
totalQuiz: $.sum('$quiz')
})
.addFields({
totalScore: $.add(['$totalHomework', '$totalQuiz', '$extraCredit'])
})
.end()
返回結(jié)果如下:
{
"_id" : 1,
"student" : "Maya",
"homework" : [ 10, 5, 10 ],
"quiz" : [ 10, 8 ],
"extraCredit" : 0,
"totalHomework" : 25,
"totalQuiz" : 18,
"totalScore" : 43
}
{
"_id" : 2,
"student" : "Ryan",
"homework" : [ 5, 6, 5 ],
"quiz" : [ 8, 8 ],
"extraCredit" : 8,
"totalHomework" : 16,
"totalQuiz" : 16,
"totalScore" : 40
}
可以用點(diǎn)表示法在嵌套記錄里增加字段。假設(shè) vehicles 集合含有如下記錄:
{ _id: 1, type: "car", specs: { doors: 4, wheels: 4 } }
{ _id: 2, type: "motorcycle", specs: { doors: 0, wheels: 2 } }
{ _id: 3, type: "jet ski" }
可以用如下操作在 specs 字段下增加一個新的字段 fuel_type,值都設(shè)為固定字符串 unleaded:
db.collection('vehicles').aggregate()
.addFields({
'spec.fuel_type': 'unleaded'
})
.end()
返回結(jié)果如下:
{ _id: 1, type: "car",
specs: { doors: 4, wheels: 4, fuel_type: "unleaded" } }
{ _id: 2, type: "motorcycle",
specs: { doors: 0, wheels: 2, fuel_type: "unleaded" } }
{ _id: 3, type: "jet ski",
specs: { fuel_type: "unleaded" } }
可以通過 $ 加字段名組成的字符串作為值的表達(dá)式來設(shè)置字段的值為另一個字段的值。
同樣用上一個集合示例,可以用如下操作添加一個字段 vehicle_type,將其值設(shè)置為 type 字段的值:
db.collection('vehicles').aggregate()
.addFields({
vehicle_type: '$type'
})
.end()
返回結(jié)果如下:
{ _id: 1, type: "car", vehicle_type: "car",
specs: { doors: 4, wheels: 4, fuel_type: "unleaded" } }
{ _id: 2, type: "motorcycle", vehicle_type: "motorcycle",
specs: { doors: 0, wheels: 2, fuel_type: "unleaded" } }
{ _id: 3, type: "jet ski", vehicle_type: "jet ski",
specs: { fuel_type: "unleaded" } }
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: