Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB:统计集合中文档的出现次数_Node.js_Mongodb_Mongoose - Fatal编程技术网

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做了我的答案帮助吗?Try
db.Books.aggregate([{$lookup:{from:“Users”,localField:“id”,foreignField:“fav_books”,as:“bookscount”},{$project:{“id”:1,“bookscount”:{$size:$bookscount”}}}}])
@SirajulHaq我的答案有帮助吗?