首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MongoDB中OR查询中的表达式序列

MongoDB中OR查询中的表达式序列
EN

Stack Overflow用户
提问于 2012-12-28 20:01:20
回答 1查看 262关注 0票数 1

读取MongoDB的OR查询文档OR的语法为:

代码语言:javascript
运行
复制
Syntax: { $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] } 

我不理解的是这些表达式执行的顺序。i.e

获取匹配表达式-1的文档如果未找到任何内容获取匹配表达式-2的文档,等等...表达式是一个接一个地执行还是真的?

它的意思是:“在$or查询中使用索引时,请记住$or查询的每个子句都将并行执行。”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-28 20:07:05

查询执行没有特定的顺序,无论它是:

代码语言:javascript
运行
复制
db.col.find({ name: 's', c: 1 });

或者:

代码语言:javascript
运行
复制
db.col.find({$or: [{name: 's'}, {c: 1}]})

$or中,MongoDB将有效地根据$or中的条件数量进行x查询,为每个子句返回一个结果,合并重复项,然后返回结果(简单地说)。由于这种行为,MongoDB实际上可以对一个$or子句使用多个索引,目前只有一个$or子句。

在创建复合索引时,这一点很重要。索引确实需要查询的特定结构,有时才能以最佳速度工作。因此,如果您有一个复合索引:

代码语言:javascript
运行
复制
{name: 1, c: 1}

它可能不匹配以下两个子句:

代码语言:javascript
运行
复制
 db.col.find({$or: [{name: 's'}, {c: 1}]})

以表演的方式。因此,对于$or子句的并行性,您必须牢记这一点。如果您希望检查所有子句是否使用了索引,可以在末尾使用explain(),它将为您分解子句及其用法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14069251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档