按多個字段劃分的MongoDB組值例如,我有以下文件:{
"addr": "address1",
"book": "book1"},{
"addr": "address2",
"book": "book1"},{
"addr": "address1",
"book": "book5"},{
"addr": "address3",
"book": "book9"},{
"addr": "address2",
"book": "book5"},{
"addr": "address2",
"book": "book1"},{
"addr": "address1",
"book": "book1"},{
"addr": "address15",
"book": "book1"},{
"addr": "address9",
"book": "book99"},{
"addr": "address90",
"book": "book33"},{
"addr": "address4",
"book": "book3"},{
"addr": "address5",
"book": "book1"},{
"addr": "address77",
"book": "book11"},{
"addr": "address1",
"book": "book1"}諸若此類。我怎樣才能提出一個請求,它將描述每個地址的前N位地址和最上面的M類書籍?預期結果實例:地址1\book_1:5書2:10書3:50共計:65______________________地址2\book_1:10書2:10|...手冊M:10共計:m*10...______________________地址N_1:20書2:20|...手冊M:20共計:m*20
3 回答

鳳凰求蠱
TA貢獻1825條經驗 獲得超4個贊
db.books.aggregate([ { $group: { _id: { addresses: "$addr", books: "$book" }, num: { $sum :1 } } }, { $group: { _id: "$_id.addresses", bookCounts: { $push: { bookName: "$_id.books",count: "$num" } } } }, { $project: { _id: 1, bookCounts:1, "totalBookAtAddress": { "$sum": "$bookCounts.count" } } }])
/* 1 */{ "_id" : "address4", "bookCounts" : [ { "bookName" : "book3", "count" : 1 } ], "totalBookAtAddress" : 1},/* 2 */{ "_id" : "address90", "bookCounts" : [ { "bookName" : "book33", "count" : 1 } ], "totalBookAtAddress" : 1},/* 3 */{ "_id" : "address15", "bookCounts" : [ { "bookName" : "book1", "count" : 1 } ], "totalBookAtAddress" : 1},/* 4 */{ "_id" : "address3", "bookCounts" : [ { "bookName" : "book9", "count" : 1 } ], "totalBookAtAddress" : 1},/* 5 */{ "_id" : "address5", "bookCounts" : [ { "bookName" : "book1", "count" : 1 } ], "totalBookAtAddress" : 1},/* 6 */{ "_id" : "address1", "bookCounts" : [ { "bookName" : "book1", "count" : 3 }, { "bookName" : "book5", "count" : 1 } ], "totalBookAtAddress" : 4},/* 7 */{ "_id" : "address2", "bookCounts" : [ { "bookName" : "book1", "count" : 2 }, { "bookName" : "book5", "count" : 1 } ], "totalBookAtAddress" : 3},/* 8 */{ "_id" : "address77", "bookCounts" : [ { "bookName" : "book11", "count" : 1 } ], "totalBookAtAddress" : 1},/* 9 */{ "_id" : "address9", "bookCounts" : [ { "bookName" : "book99", "count" : 1 } ], "totalBookAtAddress" : 1}
- 3 回答
- 0 關注
- 1154 瀏覽
添加回答
舉報
0/150
提交
取消