我正在使用MongoDB作为数据库进行项目,我遇到了一个问题:我无法找到正确的查询来简单计算文档的数量。我使用的集合是:
{ "username" : "example1",
"like" : [ { "document_id" : "doc1" },
"document_id" : "doc2 },
...]
}
所以我需要的是计算每个文档的喜欢数量,所以最后我会
{ "document_id" : "docA" , nbLikes : 30 }, {"document_id" : "docB", nbLikes : 1}
任何人都可以帮助我,因为我失败了。
答案 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" } }
}
)