MongoDB--$project和$push的區別

正文開始前,首先須要表名幾條定義:數組

聚合(aggregate)是基於數據處理的聚合管道,每一個文檔經過一個由多個階段(stage)組成的管道,能夠對每一個階段的管道進行分組、過濾等功能,而後通過一系列的處理,輸出相應的結果spa

語法:db.集合名稱.aggregate({管道:{表達式}})blog

$project是經常使用的管道命令之一:修改輸⼊⽂檔的結構,如重命名、增長、刪除字段、建立計算結果文檔

$push是經常使用的表達式之一:在結果⽂檔中插⼊值到⼀個數組中,數據透視語法

 

接下來用這個集合做爲事例來分析兩者的區別: im


> db.car.find()
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30f8"), "carname" : "大衆", "color" : "red", "price" : 120 }
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30f9"), "carname" : "奔弛", "color" : "bule", "price" : 400000 }
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30fa"), "carname" : "寶馬", "color" : "green", "price" : 300000 }
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30fb"), "carname" : "奔弛", "color" : "red", "price" : 600000 }
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30fc"), "carname" : "大衆", "color" : "yellow", "price" : 100 }
{ "_id" : ObjectId("5c2ec81a1590d9e9886e30fd"), "carname" : "大衆", "color" : "yellow", "price" : 120 }d3

 

$project:命名

db.car.aggregate(
{$project:{_id:0,carname:1}}
)數據

//_id字段默認爲1是顯示狀態,不需顯示用0表示,   其餘字段默認爲不顯示db

顯示效果爲:

 

 

$push:

db.car.aggregate(
{$group:{_id:null,name:{$push:'$carname'}}}
)

//_id:null 表示不指定分組的字段

 顯示效果爲:

相關文章
相關標籤/搜索