我需要计算其他集合中的引用文档,就像我有以下场景:
书籍:
{
id: "123",
name: "Alpha"
}, {
id: "124",
name: "Beta"
}, {
id: "125",
name: "Gamma"
}
用户:
{
id: "234",
name: "user 1"
fav_books: ["123", "124"]
}, {
id: "235",
name: "user 1"
fav_books: ["123", "124", "125"]
}, {
id: "236",
name: "user 1"
fav_books: ["123", "125"]
},
我需要计算所有用户集合中的每本书数,如上面的情景应输出:
{
"123": "3",
"124": "2",
"125": "2"
}
答案 0 :(得分:3)
如果您从未开始运行mongodb 3.4:
db.Users.aggregate( [
{ $unwind: "$fav_books" },
{ $sortByCount: "$fav_books" }
] )
无需加入。除非您想显示图书名称,否则每个用户文档中都有一系列图书ID。
以上代码输出:
{
"_id" : "123",
"count" : 3
}
{
"_id" : "125",
"count" : 2
}
{
"_id" : "124",
"count" : 2
}