mongodb数组大小聚合大小失败

时间:2017-03-14 13:34:20

标签: mongodb aggregation-framework

您好我查看了文档:https://docs.mongodb.com/manual/reference/operator/aggregation/size/  从我读到的,如果我有一个具有authors属性的对象,并且在其中我有多个作者a.k.a数组我应该使用内部聚合中的大小来做但我得到一个错误:

如果我点击了db.posts.find()。pretty()我得到了这个:

{
	"_id" : ObjectId("58c7e35a8a00f209be819771"),
	"allReviewsLink" : "link somewhere",
	"totalReviewCount" : "200"
}
{
    	"_id" : ObjectId("58c7e515be41d40a39954a38"),
    	"authors" : [
    		"Linda",
    		"Benn",
    		"Carolyn"
    	]
    }

这就是我尝试过的成功:

db.posts.aggregate(    [       {$size: {"$authors"             }          }           ] )

凡帖子是我的收藏品,我收到以下错误:SyntaxError:missing:after property id @(shell):1:63

2 个答案:

答案 0 :(得分:1)

你可以采取两种方式。

此查询会将不存在的authors值设置为大小为0.

db.posts.aggregate( [ {$project:{ size: {$size: {$ifNull:["$authors", []] }}}} ] )

或者您可以先使用$match过滤文档,然后再计算尺寸。

db.posts.aggregate( [ {$match:{authors:{$exists:true}}},{$project:{ size: {$size:"$authors" }}} ] )

答案 1 :(得分:0)

在聚合中使用$ Project,

registerWithEmailAndPassword