查询数组时是否可以使用$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}}] } )
但为什么第一个查询变量没有效?
答案 0 :(得分:0)
$or
运算符对两个或更多个数组执行逻辑OR运算,并选择至少满足其中一个的文档。 $或具有以下语法:
在第一个查询中,您试图在您的或运营商之前找到dim_cm
。这清楚地用纯文本说“查找dim_cm或gt 49,数组1的大小”。
而在第二个查询中,它清楚地显示您正在尝试在大于49的数组1的大小之间找到dim_cm
。
了解更多信息Check here。