这是集合。
{{
"id" : "123",
"likes" : [ {
"member" : "3041"
},
{
"member" : "3141"
}]
},
{
"id" : "124",
"likes" : [ {
"member" : "3241"
},
{
"member" : "3241"
},
{
"member" : "3341"
}]
}}
如何检索每个文档的“喜欢”键的对象数?
以这种格式:
[{
"id" : "123",
"likesCount" : 2
},
{
"id" : "124",
"likesCount" : 3
}]
答案 0 :(得分:1)
这应该为您做到:
db.collection.aggregate([
{
$project: {
_id: 0,
id: 1,
likesCount: {
$size: "$likes"
}
}
}
])
您使用的是聚合,在其$ project部分中,使用$size来获取数组的长度。
您可以看到它在here上运行
答案 1 :(得分:0)
我认为您必须映射集合以将其中的对象转换为所需的形状。
在这种情况下,我们获取对象并提取ID,而不仅仅是获取所有喜欢的对象的长度。
let newCollection = collection.map(obj => ({
id: obj.id,
likesCount: obj.likes.length
}));