获取 MongoDB 中每个文档被点赞的文档数

Get the number of documents liked per document in MongoDB

我正在使用 MongoDB 作为数据库来处理一个项目,我遇到了一个问题:我找不到正确的查询来简单地计算文档的点赞次数。我用的合集是这个:

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

所以我需要计算的是每个文档的点赞数,所以最后我会得到

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

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

您可以展开每个文档的 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}}
])

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

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