对于给定的结构,我需要根据唯一的slug
值找出likes
数组的计数
{
"_id" : ObjectId("4e8ae86d08101908e1000001"),
"name" : ["Name"],
"likes" : ["emp1"],
"slug": 'slugabcd'
}
{
"_id" : ObjectId("4e8ae86d08101908e1000002"),
"name" : ["Another ", "Name"],
"likes" : ["emp1","emp2","emp4"],
"slug": 'slugxyz'
}
{
"_id" : ObjectId("4e8ae86d08101908e1000002"),
"name" : ["Another ", "Name"],
"slug": 'slugpqr'
}
这是我的代码,但不工作
db.blog.aggregate({slug:"slugxyz"},{$project:{NumberOfItemsInArray:{$size:"likes"}}}).count();
我们如何才能做到这一点?
不使用任何查询阶段:
db.blog.aggregate({$project:{slug : "$slug", numberOfLikes:{$size:"$likes"}}})
尝试以下操作:
const pipeline = [
{
$group: {
_id: "$slug",
likesCount: {$sum: {$size: "$likes"}}
}
]
在这里,我们通过唯一的";鼻涕虫";值并计数"0"的大小;点赞"数组字段。