資料內(nèi)容:
第一個(gè)階段:
針對(duì)整個(gè)集合添加兩個(gè)字段:
totalPrice: 訂單原價(jià)總額
totalCost:訂單實(shí)際總額
并將結(jié)果傳到第二個(gè)階段
第二個(gè)階段:
按訂單總價(jià)進(jìn)行排序
聚合表達(dá)式
獲取字段信息
$<field> : 用 $ 指示字段路徑
$<field>.<sub field> : 使用 $ 和 . 來指示內(nèi)嵌文檔的路徑
常量表達(dá)式
$literal :<value> : 指示常量 <value>
系統(tǒng)變量表達(dá)式
$$<variable> 使用 $$ 指示系統(tǒng)變量
$$CURRENT 指示管道中當(dāng)前操作的文檔
聚合管道階段
$project 對(duì)輸入文檔進(jìn)行再次投影
$match 對(duì)輸入文檔進(jìn)行篩選
$limit 篩選出管道內(nèi)前 N 篇文檔
$skip 跳過管道內(nèi)前N篇文檔
$unwind 展開輸入文檔中的數(shù)組字段
$sort 對(duì)輸入文檔進(jìn)行排序
$lookup 對(duì)輸入文檔進(jìn)行查詢操作
$group 對(duì)輸入文檔進(jìn)行分組
$out 對(duì)管道中的文檔輸出
準(zhǔn)備數(shù)據(jù)
db.userInfo.insertMany(
[
{nickName:"zhangsan",age:18},
{nickName:"lisi",age:20}]
);
聚合管道操作
$project : 投影操作, 將原始字段投影成指定名稱, 如將 集合中的 nickName 投影成 name
1
db.userInfo.aggregate({$project:{ name:"$nickName"}});
$project 可以靈活控制輸出文檔的格式,也可以剔除不需要的字段
1
db.userInfo.aggregate({$project:{ name:"$nickName",_id:0,age:1}});