查询数组时是否可以使用$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}}] } )
但为什么第一个查询变体无效?
的$or
操作者执行两个或更多个与所述文件选择的阵列中的逻辑或运算的是的满足的至少一个。$or 具有以下语法:
在第一个查询中,您试图dim_cm
在您的 or 运算符之前查找。这在纯文本中清楚地表明“查找dim_cm 或gt 49,数组1 的大小”。
而在第二个查询中,它清楚地表明您正在尝试dim_cm
在大于 49 的数组大小之间查找。
欲了解更多信息,请点击此处。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句