MongoDB--$project和$push的區別


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

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

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

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

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

 

接下來用這個集合作為事例來分析二者的區別: 


> 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 }

 

$project:

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

//_id字段默認為1是顯示狀態,不需顯示用0表示,   其他字段默認為不顯示

顯示效果為:

 

 

$push:

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

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

 顯示效果為:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM