Node.js MongoDB:统计集合中文档的出现次数
我需要计算其他集合中的引用文档,就像我有以下场景一样: 书籍:Node.js MongoDB:统计集合中文档的出现次数,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我需要计算其他集合中的引用文档,就像我有以下场景一样: 书籍: { 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
{
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"
}
如果您正在运行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
}
如果您正在运行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
}
Try
db.Books.aggregate([{$lookup:{from:“Users”,localField:“id”,foreignField:“fav_Books”,as:“bookscount”}},{$project:{“id”:1,“bookscount”:{$size:$bookscount”}}}])
@SirajulHaq做了我的答案帮助吗?Trydb.Books.aggregate([{$lookup:{from:“Users”,localField:“id”,foreignField:“fav_books”,as:“bookscount”},{$project:{“id”:1,“bookscount”:{$size:$bookscount”}}}}])
@SirajulHaq我的答案有帮助吗?