您好我在mongodb中有一个帖子集合,其中有一个作者字段,当我运行以下命令时:
db.posts.aggregate( [ {$project:{ size: {$size: {$ifNull:["$authors", []] }}}} ] )

我得到了这样的结果:
{ "_id" : ObjectId("58c917fe48ad625ee8f49714"), "size" : 30 }
{ "_id" : ObjectId("58c91b83895efc5f0f67ba1a"), "size" : 0 }
{ "_id" : ObjectId("58c91cfd2971c05f310fccb8"), "size" : 30 }
{ "_id" : ObjectId("58c91eb7a826965f85571656"), "size" : 30 }
{ "_id" : ObjectId("58c921a1cb2bc85fa77e593a"), "size" : 30 }

如何计算大小不等于0的次数? 所以在这种情况下,结果将是4。
我试过" db.posts.aggregate([{$ project:{size:{$ size:{$ not:{" $ authors":0}}}}}]) "没有成功......
答案 0 :(得分:0)
您想使用$ match和$ count聚合方法,如下所示。查看更多MongoDB Aggregate $count
db.posts.aggregate(
[ {
$match:{ size: {$gt: 0}}
}, {
$count:'total'
} ] )
这应该返回类似:
{ "total" : 4 }