MongoDB聚合中數組裡的相等性?
為此,使用aggregate()和$group。讓我們建立一個包含文件的集合−
> db.demo578.insertOne(
... {
... "_id" : 1,
... "Info" : {
... "firstName" : "Chris",
... "lastName" : "Brown"
... },
...
... "achievements" : [
... {
... "winner" : "10th",
... "year" : 2010,
... "by" : "School"
... },
... {
... "winner" : "12th",
... "year" : 2012,
... "by" : "School"
... },
... {
... "winner" : "Good Rank",
... "year" : 2012,
... "by" : "College"
... }
... ]
... }
... );
{ "acknowledged" : true, "insertedId" : 1 }運用find()方法顯示集合中的所有文件−
> db.demo578.find();
這會生成如下的輸出−
{ "_id" : 1, "Info" : { "firstName" : "Chris", "lastName" : "Brown" }, "achievements" : [
{ "winner" : "10th", "year" : 2010, "by" : "School" },
{ "winner" : "12th", "year" : 2012, "by" : "School" },
{ "winner" : "Good Rank", "year" : 2012, "by" : "College" }
] }以下是陣列內相等性的聚合查詢−
> db.demo578.aggregate([
... {
... "$unwind": "$achievements"
... },
... {
... "$group": {
... "_id": {
... "year": "$achievements.year",
... "firstName": "$Info.firstName",
... "lastName": "$Info.lastName"
... },
... "count": { "$sum": 1 },
... "AchievementName": { "$push": "$Info" }
... }
... },
... {
... "$match": { "count": 2 }
... },
... {
... "$project": {
... "_id": 0,
... "year": "$_id.year",
... "AchievementName": 1,
... "count": 1
... }
... }
... ]).pretty();這會生成如下的輸出−
{
"count" : 2,
"AchievementName" : [
{
"firstName" : "Chris",
"lastName" : "Brown"
},
{
"firstName" : "Chris",
"lastName" : "Brown"
}
],
"year" : 2012
}
廣告
資料結構
網路
關係型資料庫
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP