【发布时间】:2019-10-22 06:33:49
【问题描述】:
我在项目中有相当复杂的查询。它可能(取决于用户的参数)有很多条件,我将它们放在 $and 和 $or 运算符下。
这是一个非常简单的例子:
docs.find({name:"shaq", organization: "myorg", url:{$exists:true}})
因此,在上述情况下,将检索满足所有三个条件的文档。 使用此代码可以实现相同的结果:
docs.find({$and:[
{name:"shaq"},
{organization:"myorg"},
{url:{$exists:true}}
]})
我想知道这对性能有何影响。它实际上是一样的,还是因为额外的操作员而工作得更慢,或者因为根据official docs而工作得更快:
$and运算符使用短路评估,这意味着如果首先 列表中的表达式返回falsemongo 不会计算 剩下的表达式
所以问题是:在$and 运算符下放置条件会影响性能吗?如果是,那有什么影响?
附:
我尝试使用 mongos explain() 调查结果,但它没有回答我的问题,因为我的真实查询量很大,导致报告庞大,真的很难分析。
【问题讨论】:
标签: mongodb mongodb-query