获取MongoDB中每个文档所需的文档数

时间:2015-08-14 14:41:19

标签: mongodb sql-like

我正在使用MongoDB作为数据库进行项目,我遇到了一个问题:我无法找到正确的查询来简单计算文档的数量。我使用的集合是:

{ "username" : "example1",
  "like" : [ { "document_id" : "doc1" },
                "document_id" : "doc2 },
                 ...]
}

所以我需要的是计算每个文档的喜欢数量,所以最后我会

{ "document_id" : "docA" , nbLikes : 30 }, {"document_id" : "docB", nbLikes : 1} 

任何人都可以帮助我,因为我失败了。

2 个答案:

答案 0 :(得分:0)

您可以通过展开每个文档的like数组,然后按document_id分组来计算每个值:

db.test.aggregate([
    // Duplicate each doc, once per 'like' array element
    {$unwind: '$like'},
    // Group them by document_id and assemble a count
    {$group: {_id: '$like.document_id', nbLikes: {$sum: 1}}},
    // Reshape the docs to match the desired output
    {$project: {_id: 0, document_id: '$_id', nbLikes: 1}}
])

答案 1 :(得分:0)

添加“likeCount”字段并增加每$ push操作的计数并读取“likeCount”字段

db.test.update(
   { _id: "..." },
   { 
       $inc: { likeCount: 1 }, 
       $push: { like: { "document_id" : "doc1" } }
    }
)