按多個字段劃分的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 關注
- 1163 瀏覽
添加回答
舉報
0/150
提交
取消
