在 Mongodb 中测试空数组

问题描述 投票:0回答:2

我正在寻找同时具有非空“e-campaigns”和“p-campaigns”数组的文档:

 db.coll.find( { 'p-campaigns':{$ne:[]} ,  'e-campaigns' : {$ne:[]} }     )

我分别对每个数组运行查询,并找到具有非空

p-campaigns
e-campaigns
的文档,但组合条件结果为空。我知道有些文档的
p-campaigns
e-campaigns
都非空。我尝试使用
$and
,得到相同的结果:没有两个数组都非空的文档。

我的处理方式正确吗?如果没有,为什么?这似乎是在上述条件下运行此查询的逻辑方法。谢谢。

mongodb mongodb-query
2个回答
1
投票

这是我的变体:

> db.a.save({x:[], y:[]})
> db.a.save({x:[1], y:[]})
> db.a.save({x:[], y:[1]})
> db.a.save({x:[1], y:[1]})
> db.a.find()
{ "_id" : ObjectId("52248f5efb41276d1f3e3164"), "x" : [ ], "y" : [ ] }
{ "_id" : ObjectId("52248f61fb41276d1f3e3165"), "x" : [ 1 ], "y" : [ ] }
{ "_id" : ObjectId("52248f66fb41276d1f3e3166"), "x" : [ ], "y" : [ 1 ] }
{ "_id" : ObjectId("52248f69fb41276d1f3e3167"), "x" : [ 1 ], "y" : [ 1 ] }
> db.a.find({ 'x':{$ne:[]} ,  'y' : {$ne:[]} })
{ "_id" : ObjectId("52248f69fb41276d1f3e3167"), "x" : [ 1 ], "y" : [ 1 ] }

0
投票

对于 mongoDb 过滤器查询中的空数组:

{field: {$size: 0}} // When find field array size is 0 or empty.
© www.soinside.com 2019 - 2024. All rights reserved.