按多个字段划分的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 关注
- 1207 浏览
添加回答
举报
0/150
提交
取消
