find
¶3.2版中的新功能。
执行查询并返回第一批结果和游标ID,客户端可以从中构造游标。
小费
find
可以直接使用外壳程序中db.collection.find()
提供
mongo
的帮助程序,也可以使用驱动程序中的等效帮助程序,而不是直接运行命令。
在版本4.2中进行了更改: MongoDB删除maxScan
了find
命令中不推荐使用的选项
。使用该maxTimeMS
选项。
该find
命令具有以下语法:
该命令接受以下字段:
领域 | 类型 | 描述 |
---|---|---|
find |
串 | 要查询的集合或视图的名称。 |
filter |
文献 | 可选的。查询谓词。如果未指定,则集合中的所有文档都将与谓词匹配。 |
sort |
文献 | 可选的。结果排序的排序规范。 |
projection |
文献 | |
hint |
字符串或文件 | 可选的。索引规范。将索引名称指定为字符串或索引键模式。如果指定,则查询系统将仅考虑使用提示索引的计划。 在版本4.2中更改:除了以下例外, |
skip |
正整数 | 可选的。要跳过的文档数。预设为0。 |
limit |
非负整数 | 可选的。返回的最大文件数。如果未指定,则默认为无限制。限制为0等于无限制。 |
batchSize |
非负整数 | 可选的。第一批中要返回的文档数。默认值为101。batchSize为0表示将建立光标,但在第一批中将不返回任何文档。 与以前的有线协议版本不同,该 |
singleBatch |
布尔值 | 可选的。确定是否在第一批之后关闭光标。默认为false。 |
comment |
串 | 可选的。附加到查询的注释,以帮助解释和跟踪查询
profile 数据。 |
maxTimeMS |
正整数 | 可选的。光标上的处理操作的累积时间限制(以毫秒为单位)。MongoDB在最早的中断点后中止操作 。 小费 指定时,请始终使用以防大多数数据承载成员不可用。确保操作不会无限期地阻塞,而是确保如果无法满足读取要求,则该操作将返回错误。 |
readConcern |
文献 | 可选的。指定读取关注。 从MongoDB 3.6开始,readConcern选项具有以下语法: 可能的阅读关注级别为:
有关阅读关注级别的更多信息,请参阅 阅读关注级别。 该 |
max |
文献 | 可选的。特定索引的排他上限。有关 从MongoDB 4.2开始,要使用该 |
min |
文献 | 可选的。特定索引的包含性下限。有关 从MongoDB 4.2开始,要使用该 |
returnKey |
布尔值 | 可选的。如果为true,则仅返回结果文档中的索引键。默认值为false。如果returnKey为true并且find
命令不使用索引,则返回的文档将为空。 |
showRecordId |
布尔值 | 可选的。确定是否返回每个文档的记录标识符。如果为true,则将字段$ recordId添加到返回的文档中。 |
tailable |
布尔值 | 可选的。返回有上限的集合的可尾光标。 |
awaitData |
布尔值 | 可选的。getMore 如果在数据末尾而不是不返回数据,则与tailable选项一起使用可临时阻止
光标上的命令。超时后,
find 照常返回。 |
oplogReplay |
布尔值 | 可选的。用于重播副本集的oplog的内部命令。 要使用 例如,以下命令以时间戳晚于或等于UTC 2018年1月1日的时间重播带有 在版本3.6中更改: |
noCursorTimeout |
布尔值 | 可选的。防止服务器在不活动时间(10分钟)后使空闲的游标超时。 |
allowPartialResults | 布尔值 | 可选的。对于针对分片集合的查询 |
collation |
文献 | 可选的。 指定 用于操作的排序规则。 归类允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。 排序规则选项具有以下语法: 指定排序规则时,该 如果未指定排序规则,但是集合具有默认排序规则(请参阅参考资料 如果没有为集合或操作指定排序规则,则MongoDB使用先前版本中使用的简单二进制比较进行字符串比较。 您不能为一个操作指定多个排序规则。例如,您不能为每个字段指定不同的排序规则,或者如果对排序执行查找,则不能对查找使用一种排序规则,而对排序使用另一种排序规则。 3.4版的新功能。 |
该命令返回包含游标信息的文档,包括游标ID和第一批文档。例如,对分片集合运行时将返回以下文档:
领域 | 描述 |
---|---|
cursor |
包含游标信息,包括游标id 和firstBatch 文档。 |
"ok" |
指示命令是成功(1 )还是失败(0 )。 |
除了上述find
特定字段外,db.runCommand()
还包括以下有关副本集和分片群集的信息:
$clusterTime
operationTime
有关详细信息,请参见db.runCommand()结果。
版本4.0中的新功能。
对于在会话内创建的游标,不能getMore
在会话外调用
。
同样,对于在会话外部创建的游标,不能getMore
在会话内部调用
。
从MongoDB 3.6开始,MongoDB驱动程序和mongo
外壳程序将所有操作与服务器会话相关联,但未确认的写操作除外。对于未与会话明确关联的操作(即使用Mongo.startSession()
),MongoDB驱动程序和mongo
外壳程序会创建一个隐式会话并将其与该操作相关联。
如果会话空闲时间超过30分钟,则MongoDB服务器会将会话标记为已过期,并可以随时关闭它。当MongoDB服务器关闭会话时,它还会终止所有正在进行的操作并打开与该会话关联的游标。这包括配置了30分钟noCursorTimeout
或maxTimeMS
30分钟以上的光标。
对于返回游标的操作,如果游标可能闲置了30分钟以上,请在显式会话中使用发出操作,Session.startSession()
并使用refreshSessions
命令定期刷新该会话。请参阅
以获取更多信息。Session Idle Timeout
重要
在大多数情况下,与单文档写入相比,多文档事务产生的性能成本更高,并且多文档事务的可用性不应代替有效的架构设计。在许多情况下, 非规范化数据模型(嵌入式文档和数组)对于您的数据和用例将继续是最佳的。也就是说,在许多情况下,对数据进行适当的建模将最大程度地减少对多文档交易的需求。
有关其他事务使用方面的注意事项(例如运行时限制和oplog大小限制),另请参见 生产注意事项。
以下命令find
在rating
字段和cuisine
字段上运行命令过滤。该命令包括projection
仅在匹配的文档返回以下字段:_id
,name
,
rating
,和address
领域。
该命令按name
字段对结果集中的文档进行排序,并将结果集限制为5个文档。
要覆盖默认的阅读关注级别"local"
,请使用readConcern
选项。
对副本集的以下操作指定了读取关注点:"majority"
读取已确认已写入大多数节点的数据的最新副本。
若要使用关注级别"majority"
,副本集必须使用WiredTiger存储引擎。
您可以"majority"
为具有三名成员的主次仲裁器(PSA)架构的部署禁用读取关注。但是,这对变更流(仅在MongoDB 4.0和更早版本中)和分片群集上的事务有影响。有关更多信息,请参见禁用多数阅读关注。
无论读关注级别如何,节点上的最新数据都可能无法反映系统中数据的最新版本。
该getMore
命令使用readConcern
原始find
命令中指定的级别。
readConcern
可以使用以下
方法为mongo
shell方法
指定A :db.collection.find()
cursor.readConcern
有关可用阅读关注点的更多信息,请参见 阅读关注点。
3.4版的新功能。
归类允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。
以下操作find
使用指定的排序规则运行命令:
所述mongo
外壳提供了cursor.collation()
以指定归类为一个
db.collection.find()
操作。
也可以看看