使用$和,$或的Mongo数组查询

时间:2018-05-14 11:32:02

标签: mongodb

查询数组时是否可以使用$and$or逻辑运算符?

因为当我创建一个包含2个文档的集合时

db.inventory.insertMany([
  { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 25 ] },
  { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 50 ] }
]);

和查询

db.inventory.find( { dim_cm: {$or: [ {$gt: 49}, {$size: 1} ] }  }  )

结果是错误unknown operator $or

我可以将查询重写为

db.inventory.find( { $or: [{dim_cm: {$gt: 49}}, {dim_cm: {$size: 1}}] } )

但为什么第一个查询变量没有效?

1 个答案:

答案 0 :(得分:0)

$or运算符对两个或更多个数组执行逻辑OR运算,并选择至少满足其中一个的文档。 $或具有以下语法:

在第一个查询中,您试图在您的或运营商之前找到dim_cm。这清楚地用纯文本说“查找dim_cm或gt 49,数组1的大小”。

而在第二个查询中,它清楚地显示您正在尝试在大于49的数组1的大小之间找到dim_cm

了解更多信息Check here