Mongodb$or评估

Mongodb$or评估,mongodb,Mongodb,在javascript中 const a=func1()| | func2() 如果func1()返回true,则跳过func2()(不会调用) 这在mongodb$中是正确的还是同样正确的 db.collection('something').find({$or:[{{quantity:{$lt:20}},{price:{$gt:100}]}) 如果数量小于20美元,mongodb会停止评估价格吗?美元或接受订单重要的列表 这被称为“短路”评估,如果第一个条件不匹配,则测试下一个条件,依此类推

在javascript中

const a=func1()| | func2()

如果
func1()
返回true,则跳过
func2()
(不会调用)

这在mongodb$中是正确的还是同样正确的

db.collection('something').find({$or:[{{quantity:{$lt:20}},{price:{$gt:100}]})


如果数量小于20美元,mongodb会停止评估价格吗?

美元或接受订单重要的列表

这被称为“短路”评估,如果第一个条件不匹配,则测试下一个条件,依此类推

查询:

db.somecollection.find( { $or: [ { quantity: { $lt: 20 } }, { price: { $gt: 100 } } ] } )
此查询将选择somecollection中数量字段值小于20的所有文档

如果未满足此条件,则测试下一个条件,即如果价格字段值大于100


这是两个不同的概念。
|
是短路计算表达式。而
$或
是一个逻辑析取。对于您的查询,mongo将对数量小于20或大于100的每个文档进行查询。匹配文档的示例:
[{quantity:18},{quantity:19},{quantity:101}]
不,如果价格数量小于20,它不会停止,因为它是$,或者,如果任何一个条件为真,它将向您提供结果以了解其功能。我的问题是,如果
{quantity:{$lt:20}}
使用
$或
操作符返回true,mongodb是否出于好奇而对
{price:{$gt:100}}
进行评估。编辑了文章。你现在可以参考。