MongoDB-CN-Manual
  • MongoDB中文手册|官方文档中文版
  • MongoDB用户手册说明
  • MongoDB简介
    • 入门
    • 数据库和集合
      • 视图
      • 按需物化视图
      • 封顶集合
      • 时间序列集合
    • 文档
    • BSON类型
      • Comparison and Sort Order
      • MongoDB Extended JSON (v2)
      • MongoDB Extended JSON (v1)
  • 安装 MongoDB
    • 安装MongoDB社区版
      • 在Linux上安装MongoDB社区版
      • 在macOS上安装MongoDB社区版
      • 在Windows上安装MongoDB社区版
    • 安装MongoDB企业版
      • 在Linux上安装MongoDB企业版
      • 在Mac OS安装MongoDB企业版
      • 在Windows安装MongoDB企业版
      • 使用Docker安装MongoDB企业版
    • 将社区版MongoDB升级到企业版MongoDB
    • 验证MongoDB软件包的完整性
  • The mongo Shell
    • 配置mongo Shell
    • 使用 mongo Shell帮助
    • 为mongo Shell编写脚本
    • mongo Shell中的数据类型
    • mongo Shell 快速参考
  • MongoDB CRUD操作
    • 插入文档
      • 插入方法
    • 查询文档
      • 在mongo Shell中迭代游标
      • 从查询返回的项目字段
      • 查询嵌入式文档数组
      • 查询数组
      • 查询空字段或缺少字段
      • 查询嵌入/嵌套文档
    • 更新文档
      • 更新方法
      • 聚合管道更新
    • 删除文档
      • 删除方法
    • 地理空间查询
      • 用地理空间查询查找餐馆
      • GeoJSON对象
    • 批量写入操作
    • 可重试写入
    • 可重试读取
    • SQL到MongoDB的映射图表
    • 文本搜索
      • 文本索引
      • 文本索引操作
      • 集合管道中的文本索引
      • 文本索引语言
    • Read Concern读关注
      • 读关注 "local"
      • 读关注 "available"
      • 读关注 "majority"
      • 读关注 "linearizable"
      • 读关注 "snapshot"
    • Write Concern写关注
    • MongoDB CRUD概念
      • 原子性和事务
      • 读隔离性,一致性和近因性
        • 因果一致性和读写关注
      • 分布式查询
      • 通过findAndModify进行线性化读取
      • 查询计划
      • 查询优化
        • 评估当前操作性能
        • 优化查询性能
        • 写操作性能
        • 说明结果
      • 分析查询表现
      • Tailable 游标
  • MongoDB聚合
    • 聚合管道
      • 聚合管道优化
      • 聚合管道限制
      • 聚合管道和分片集合
      • 使用 Zip Code 数据集进行聚合
      • 使用用户首选项数据进行聚合
    • Map-Reduce
      • Map-Reduce 和分片集合
      • Map-Reduce 并发
      • Map-Reduce 示例
      • 执行增量 Map-Reduce
      • 对 Map Function 进行故障排除
      • 排除 Reduce Function 问题
      • Map-Reduce转换到聚合管道
    • 聚合参考
      • 聚合管道快速参考
      • 聚合命令
      • 聚合命令对比
      • 聚合表达式中的变量
      • SQL 到聚合映射图表
  • MongoDB数据模型
    • 数据建模介绍
    • 模式验证
    • 数据模型设计
      • 一对一嵌套关系模型
  • MongoDB事务
  • MongoDB事务
    • 驱动程序 API
    • 生产注意事项
    • 生产注意事项 (分片集群)
    • 事务操作
  • MongoDB索引
    • 单字段索引
    • 复合索引
    • 多键索引
      • 多键索引范围
    • 文本索引
      • 为文本索引指定语言
      • 指定文本索引的名称
      • 用权重控制搜索结果
      • 限制扫描条目的数量
    • 通配符索引
      • 通配符索引限制
    • 2dsphere 索引
      • 查询一个2dsphere索引
    • 2d 索引
      • 创建一个2d索引
      • 查询一个2d索引
      • 2d索引内部
      • 使用球面几何计算距离
    • geoHaystack 索引
      • 创建Haystack索引
      • 查询Haystack索引
    • 哈希索引
    • 索引特性
      • TTL 索引
        • 通过设置TTL使集合中的数据过期
      • 唯一索引
      • 部分索引
      • 不分大小写索引
      • Sparse 索引
    • 在填充的集合上建立索引
      • 在副本集上建立滚动索引
      • 在分片群集上建立滚动索引
    • 索引交集
    • 管理索引
    • 衡量索引使用
    • 索引策略
      • 创建索引来支持查询
      • 使用索引对查询结果进行排序
      • 确保索引适合RAM
      • 创建以确保选择性的查询
    • 索引参考
  • MongoDB安全
    • 安全检查列表
    • 启用访问控制
    • 身份验证
      • 用户
        • 添加用户
        • 权限认证机制
          • SCRAM
            • 用x.509证书来认证客户端
    • 审计
      • 配置审计过滤器
      • 配置审计
      • 系统事件审计消息
    • 网络和配置强化
    • 安全参考
      • system.roles集合
      • system.users集合
      • 资源文档
      • 权限操作
    • 附录
      • 附录-A-用于测试的 OpenSSl CA 证书
      • 附录-B-用于测试的OpenSSL服务器证书
      • 附录-C-用于测试的OpenSSL客户端证书
  • Change Streams变更流
    • 变更流生产建议
    • 变更事件
  • MongoDB复制
    • 副本集成员
    • 副本集日志
    • 副本集数据同步
    • 副本集部署架构
    • 副本集成员配置教程
    • 副本集维护教程
    • MongoDB复制参考
  • MongoDB分片
    • 分片集群组件
    • 分片键
    • 哈希分片
    • 范围分片
    • 区
      • 管理分片区
      • 按位置细分数据
      • 用于更改SLA或SLO的分层硬件
      • 按应用或客户细分数据
      • 仅插入工作负载的分布式本地写入
      • 管理分片区
    • 使用块进行数据分区
      • 在分片集群中拆分数据块
    • 分片管理
      • 查看集群设置
    • 重启一个分片集群
    • [把一个分片集群迁移到不同的硬件](fen-pian/migrate-a -sharded-cluster-to-different-hardware.md)
    • 分片参考
  • MongoDB管理
    • 产品说明
    • 操作检查列表
    • 开发检查列表
    • 配置和维护
    • 性能
    • 数据中心意识
      • MongoDB部署中的工作负载隔离
      • 区
        • 管理分片区
        • 按位置细分数据
        • 用于更改SLA或SLO的分层硬件
        • 按应用或客户细分数据
        • 仅插入工作负载的分布式本地写入
        • 管理分片区
    • MongoDB备份方法
    • MongoDB监控
  • MongoDB存储
    • 存储引擎
      • WiredTiger 存储引擎
      • 内存存储引擎
    • 日志记录
      • 管理日志记录
        • GridFS
        • FAQ:MongoDB 存储
  • MongoDB参考
    • 运算符
      • 查询与映射运算符
        • 比较查询运算符
          • $eq
          • $gt
          • $gte
          • $in
          • $lt
          • $lte
          • $ne
          • $nin
        • 逻辑查询运算符
          • $and
          • $not
          • $nor
          • $or
        • 元素查询运算符
        • 评估查询运算符
        • 地理空间查询运算符
        • 数组查询运算符
        • 按位查询运算符
        • $comment
        • 映射运算符
      • 更新运算符
        • 字段更新运算符
        • 数组更新运算符
        • 按位更新运算符
      • 聚合管道阶段
      • 聚合管道操作符
        • $abs (aggregation)
        • $acos (aggregation)
        • $acosh (aggregation)
        • $add (aggregation)
        • $addToSet (aggregation)
        • $allElementsTrue (aggregation)
        • $and (aggregation)
        • $anyElementTrue (aggregation)
        • $arrayElemAt (aggregation)
        • $arrayToObject (aggregation)
        • $asin (aggregation)
        • $asinh (aggregation)
        • $atan (aggregation)
        • $atan2 (aggregation)
        • $atanh (aggregation)
        • $avg (aggregation)
        • $ceil (aggregation)
        • $cmp (aggregation)
        • $concat (aggregation)
        • $concatArrays (aggregation)
        • $cond (aggregation)
        • $convert (aggregation)
        • $cos (aggregation)
        • $dateFromParts (aggregation)
        • $dateToParts (aggregation)
        • $dateFromString (aggregation)
        • $literal (aggregation)
      • 查询修饰符
    • 数据库命令
      • 聚合命令
      • 地理空间命令
      • 查询和写操作命令
      • 查询计划缓存命令
      • 认证命令
      • 用户管理命令
      • 角色管理命令
      • 复制命令
      • 分片命令
      • 会话命令
      • 管理命令
      • 诊断命令
      • 免费监控命令
      • 系统事件审计命令
    • mongo Shell 方法
      • 集合方法
        • db.collection.aggregate()
        • db.collection.bulkWrite()
        • db.collection.copyTo()
        • db.collection.count()
        • db.collection.countDocuments()
        • db.collection.estimatedDocumentCount()
        • db.collection.createIndex()
        • db.collection.createIndexes()
        • db.collection.dataSize()
        • db.collection.deleteOne()
        • db.collection.deleteMany()
        • db.collection.distinct()
        • db.collection.drop()
        • db.collection.dropIndex()
        • db.collection.dropIndexes()
        • db.collection.ensureIndex()
        • db.collection.explain()
        • db.collection.find()
        • db.collection.findAndModify()
        • db.collection.findOne()
        • db.collection.findOneAndDelete()
        • db.collection.findOneAndReplace()
        • db.collection.findOneAndUpdate()
        • db.collection.getIndexes()
        • db.collection.getShardDistribution()
        • db.collection.getShardVersion()
        • db.collection.insert()
        • db.collection.insertOne()
        • db.collection.insertMany()
        • db.collection.isCapped()
        • db.collection.latencyStats()
        • db.collection.mapReduce()
        • db.collection.reIndex()
        • db.collection.remove()
        • db.collection.renameCollection()
        • db.collection.replaceOne()
        • db.collection.save()
        • db.collection.stats()
        • db.collection.storageSize()
        • db.collection.totalIndexSize()
        • db.collection.totalSize()
        • db.collection.update()
        • db.collection.updateOne()
        • db.collection.updateMany()
        • db.collection.watch()
        • db.collection.validate()
    • MongoDB中的限制与阈值
    • MongoDB系统集合
    • 词汇表
    • 默认的MongoDB端口
    • 默认的MongoDB读/写关注
    • 服务器会话
  • MongoDB FAQ
    • FAQ: MongoDB基础知识
    • FAQ: MongoDB索引
    • FAQ: MongoDB并发
    • FAQ: MongoDB分片
    • FAQ: MongoDB复制和副本集
    • FAQ: MongoDB存储
    • FAQ: MongoDB诊断
  • MongoDB 版本管理
  • 联系我们
    • Tapdata Cloud
    • MongoDB中文社区
    • 社区合作伙伴—锦木信息
由 GitBook 提供支持
在本页
  • 定义
  • 行为
  • 投影
  • 游标处理
  • 阅读关注
  • 包装类型
  • 会话
  • 交易
  • 客户端断开
  • 例子
  • 查找集合中的所有文档
  • 查找 Match 查询条件的文档
  • 查询嵌入式文档
  • 查询数组
  • 预测
  • 迭代返回的光标
  • 修改游标行为
  1. MongoDB参考
  2. mongo Shell 方法
  3. 集合方法

db.collection.find()

上一页db.collection.explain()下一页db.collection.findAndModify()

最后更新于3年前

在本页面

定义

  • db.collection. find(查询,投影)

    • 选择集合或视图中的文档,并将光标返回到所选文档。

参数
类型
描述

query

document

可选的。使用query operators指定选择过滤器。要 return 集合中的所有文档,请省略此参数或传递空文档({})。

projection

document

可选的。指定_retch 查询过滤器的文档中的 return 字段。要_retret 匹配文档中的所有字段,请省略此参数。有关详细信息,请参阅投影。

返回:

与匹配query标准的文档。当find()方法“返回文档”时,该方法实际上是将光标返回到文档。

行为

投影

projection参数确定匹配文档中返回的字段。 projection参数采用以下形式的文档:

{ field1: <value>, field2: <value> ... }

<value>可以是以下任何一种:

  • 1或true在 return 文档中包含该字段。

  • 0或false排除该字段。

  • 表达式使用投影操作员。

    find()视图操作不支持以下投影 operators:

    • $

    • $elemMatch

    • $slice

    • $meta

      注意

      对于_id字段,您不必明确指定_id: 1来_return _id字段。除非指定_id: 0以禁止字段,否则find()方法始终返回_id字段。

除了排除_id字段外,projection不能同时包含 include 和 exclude 规范。在明确包含字段的投影中,_id字段是您可以显式排除的唯一字段。

游标处理

在mongo shell 中执行db.collection.find()会自动迭代光标以显示前 20 个文档。键入it以继续迭代。

要使用驱动程序访问返回的文档,请使用适当的司机语言光标处理机制。

也可以看看

  • 迭代返回的游标

  • 修改光标行为

  • 可用的mongo Shell游标方法

阅读关注

要为db.collection.find()指定阅读关注,请使用cursor.readConcern()方法。

包装类型

MongoDB 将某些数据类型视为等效用于比较目的。例如,数字类型在比较之前进行转换。但是,对于大多数数据类型,比较 operators仅对目标字段的BSON 类型与查询操作数的类型匹配的文档执行比较。考虑以下集合:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }
{ "_id": "oranges", "qty": { "in stock": 8, "ordered": 12 } }
{ "_id": "avocados", "qty": "fourteen" }

以下查询使用$gt来 return qty的 value 大于4的文档。

db.collection.find( { qty: { $gt: 4 } } )

该查询返回以下文档:

{ "_id": "apples", "qty": 5 }
{ "_id": "bananas", "qty": 7 }

不返回_id等于"avocados"的文档,因为qty value 的类型为string而$gt操作数的类型为integer。

不返回_id等于"oranges"的文档,因为其qty value 的类型为object。

注意

要在集合中强制执行数据类型,请使用Schema 验证。

会话

版本4.0中的新功能。

对于在会话内创建的游标,不能getMore在会话外调用 。

同样,对于在会话外部创建的游标,不能getMore在会话内部调用 。

会话空闲超时

从MongoDB 3.6开始,MongoDB驱动程序和mongoshell程序将所有操作与服务器会话相关联,但未确认的写操作除外。对于未与会话明确关联的操作(即使用Mongo.startSession()),MongoDB驱动程序和mongo外壳程序会创建一个隐式会话并将其与该操作相关联。

如果会话空闲时间超过30分钟,则MongoDB服务器会将会话标记为已过期,并可以随时关闭它。当MongoDB服务器关闭会话时,它还会终止所有正在进行的操作并打开与该会话关联的游标。这包括配置了30分钟noCursorTimeout或maxTimeMS30分钟以上的光标。

对于可能闲置超过30分钟的操作,请使用将该操作与显式会话相关联, Session.startSession()并使用该refreshSessions命令定期刷新该会话。请参阅以获取更多信息。Session Idle Timeout

交易

db.collection.find()可以在多文档交易中使用。

  • 对于在事务外部创建的游标,不能getMore在事务内部调用 。

  • 对于在事务中创建的游标,不能getMore在事务外部调用 。

重要

在大多数情况下,与单文档写入相比,多文档事务产生的性能成本更高,并且多文档事务的可用性不应替代有效的架构设计。在许多情况下, 非规范化数据模型(嵌入式文档和数组)将继续是您的数据和用例的最佳选择。也就是说,在许多情况下,适当地对数据建模将最大程度地减少对多文档交易的需求。

有关其他事务使用方面的注意事项(例如运行时限制和操作日志大小限制),另请参见 生产注意事项。

客户端断开

从MongoDB 4.2开始,如果发出db.collection.find() 断开连接的客户端在操作完成之前断开连接,则MongoDB将标记db.collection.find()为终止(即killOp在操作上)。

例子

本节中的示例使用bios 集合中的文档,其中文档通常具有以下形式:

{
    "_id" : <value>,
        "name" : { "first" : <string>, "last" : <string> },  // embedded document
    "birth" : <ISODate>,
    "death" : <ISODate>,
    "contribs" : [ <string>, ... ],  // Array of Strings
    "awards" : [
        { "award" : <string>, year: <number>, by: <string> }  // Array of embedded documents
        ...
    ]
}

要创建和填充bios集合,请参阅bios Example Collection。

查找集合中的所有文档

没有参数的find()方法返回集合中的所有文档,并返回文档的所有字段。对于 example,以下操作返回bios 系列中的所有文档:

db.bios.find()

查找 Match 查询条件的文档

查询平等

  • 以下操作返回bios 系列中_id等于5的文档:

    db.bios.find( { _id: 5 } )
  • 以下操作返回bios 系列中的文档,其中name嵌入文档中的字段last等于"Hopper":

    db.bios.find( { "name.last": "Hopper" } )

    注意

    要访问嵌入文档中的字段,请使用点符号("<embedded document>.<field>")。

使用 Operators 进行查询

要查找匹配一组选择条件的文档,请使用<criteria>参数调用find()。

MongoDB 提供各种query operators来指定标准。

  • 以下操作使用$in operator return bios 系列中的文档,其中_id等于5或ObjectId("507c35dd8fada716c89d0013"):

    db.bios.find(
       { _id: { $in: [ 5, ObjectId("507c35dd8fada716c89d0013") ] } }
    )
  • 以下操作使用$gt operator 返回bios集合中birth大于new Date('1950-01-01')的所有文档:

    db.bios.find( { birth: { $gt: new Date('1950-01-01') } } )
  • 以下操作使用$regex operator return bios 系列中的文档,其中name.last字段以字母N(或"LIKE N%")开头

    db.bios.find(
       { "name.last": { $regex: /^N/ } }
    )

有关查询 operators 的列表,请参阅查询 Selectors。

查询范围

组合比较 operators 以指定字段的范围。以下操作从bios 系列文档返回,其中birth介于new Date('1940-01-01')和new Date('1960-01-01')之间(独占):

db.bios.find( { birth: { $gt: new Date('1940-01-01'), $lt: new Date('1960-01-01') } } )

有关查询 operators 的列表,请参阅查询 Selectors。

查询多个条件

以下操作返回bios 系列中的所有文档,其中birth字段为比...更棒 new Date('1950-01-01')且death字段不存在:

db.bios.find( {
    birth: { $gt: new Date('1920-01-01') },
    death: { $exists: false }
} )

有关查询 operators 的列表,请参阅查询 Selectors。

查询嵌入式文档

以下示例查询bios 系列中的name嵌入字段。

查询嵌入式文档的精确匹配

以下操作返回bios 系列中的文档,其中嵌入的文档name正好是{ first: "Yukihiro", last: "Matsumoto" },包括 order:

db.bios.find(
    { name: { first: "Yukihiro", last: "Matsumoto" } }
)

name字段必须完全匹配嵌入文档。查询将使文档与具有name以下任一值的字段进行匹配:

{
       first: "Yukihiro",
       aka: "Matz",
       last: "Matsumoto"
    }
{
   last: "Matsumoto",
   first: "Yukihiro"
}

查询嵌入文档的字段

以下操作返回bios 系列中的文档,其中嵌入文档name包含带有 value "Yukihiro"的字段first和带有 value "Matsumoto"的字段last。该查询使用点符号访问嵌入文档中的字段:

db.bios.find(
    {
        "name.first": "Yukihiro",
        "name.last": "Matsumoto"
    }
)

该查询匹配name字段包含嵌入文档的文档,其中first字段包含 value "Yukihiro",字段last包含 value "Matsumoto"。例如,查询将使用包含以下任一值的name字段匹配文档:

{
    first: "Yukihiro",
    aka: "Matz",
    last: "Matsumoto"
}
{
    last: "Matsumoto",
    first: "Yukihiro"
}

有关更多信息和示例,另请参阅查询 Embedded/Nested 文档。

查询数组

查询 Array 元素

以下示例查询bios 系列中的contribs array。

  • 以下操作返回bios 系列中的文档,其中 array 字段contribs包含元素"UNIX":

    db.bios.find( { contribs: "UNIX" } )
  • 以下操作返回bios 系列中的文档,其中 array 字段contribs包含元素"ALGOL"或"Lisp":

    db.bios.find( { contribs: { $in: [ "ALGOL", "Lisp" ]} } )
  • 以下操作使用$all query operator return bios 系列中的文档,其中 array 字段contribs包含元素"ALGOL"和"Lisp":

    db.bios.find( { contribs: { $all: [ "ALGOL", "Lisp" ] } } )

有关更多示例,请参阅$all。另见$elemMatch。

  • 以下操作使用$size operator return bios 系列中contribs的 array 大小为 4 的文档:

    db.bios.find( { contribs: { $size: 4 } } )

有关查询 array 的更多信息和示例,请参阅:

  • 查询 Array

  • 查询嵌入式文档的 Array

有关 array 特定查询 operators 的列表,请参阅Array。

查询 Array of Documents

以下示例查询bios 系列中的awards array。

  • 以下操作返回bios 系列中的文档,其中awards array 包含award字段等于"Turing的元素:

    db.bios.find(
        { "awards.award": "Turing Award" }
    )
  • 以下操作返回bios 系列中的文档,其中awards array 包含至少一个元素,其中award字段等于"Turing Award"且year字段大于 1980:

    db.bios.find(
        { awards: { $elemMatch: { award: "Turing Award", year: { $gt: 1980 } } } }
    )

使用$elemMatch operator 在 array 元素上指定多个条件。

有关查询 array 的更多信息和示例,请参阅:

  • 查询 Array

  • 查询嵌入式文档的 Array

    有关 array 特定查询 operators 的列表,请参阅Array。

预测

projection参数指定 return 的哪些字段。除非排除属于_id字段,否则该参数包含 include 或 exclude 规范,而不是两者。

注意

除非在投影文档_id: 0中明确排除_id字段,否则返回_id字段。

指定 Return 的字段

以下操作查找bios 系列中的所有文档,并仅返回name字段,contribs字段和_id字段:

db.bios.find( { }, { name: 1, contribs: 1 } )

注意

除非在投影文档_id: 0中明确排除_id字段,否则返回_id字段。

明确排除的字段

以下操作查询bios 系列并返回除name嵌入文档和birth字段中的first字段之外的所有字段:

db.bios.find(
    { contribs: 'OOP' },
    { 'name.first': 0, birth: 0 }
)

明确排除_id 字段

注意

除非在投影文档_id: 0中明确排除_id字段,否则返回_id字段。

以下操作在bios 系列中查找文档,并仅返回name字段和contribs字段:

db.bios.find(
    { },
    { name: 1, contribs: 1, _id: 0 }
)

关于数组和嵌入式文档

以下操作查询bios 系列并返回name嵌入文档中的last字段和contribs array 中的前两个元素:

db.bios.find(
    { },
    {
        _id: 0,
        'name.last': 1,
        contribs: { $slice: 2 }
    }
)

也可以看看

从查询返回的项目字段

迭代返回的光标

find()方法返回光标到结果。

在mongo shell 中,如果未使用var关键字将返回的游标分配给变量,则会自动迭代游标以访问最匹配查询的前 20 个文档。您可以设置DBQuery.shellBatchSize变量以更改自动迭代文档的数量。

要手动迭代结果,请将返回的光标分配给带有var关键字的变量,如以下部分所示。

使用 Variable Name

以下 example 使用变量myCursor迭代游标并打印匹配的文档:

var myCursor = db.bios.find( );

myCursor

使用 next()方法

以下 example 使用游标方法next()来访问文档:

var myCursor = db.bios.find( );
var myDocument = myCursor.hasNext() ? myCursor.next() : null;

if (myDocument) {
    var myName = myDocument.name;
    print (tojson(myName));
}

要打印,您还可以使用printjson()方法而不是print(tojson()):

if (myDocument) {
    var myName = myDocument.name;
    printjson(myName);
}

使用 forEach()方法

以下 example 使用游标方法forEach()来迭代游标并访问文档:

var myCursor = db.bios.find( );

myCursor.forEach(printjson);

修改游标行为

mongo shell 和司机提供了几个游标方法,这些方法调用find()方法返回的游标来修改其行为。

Order 结果集中的文档

sort()方法对结果集中的文档进行排序。以下操作返回name中按name字段按升序排序的文档中的文档:

db.bios.find().sort( { name: 1 } )

sort()对应于 SQL 中的ORDER BY语句。

将文档数限制为 Return

limit()方法限制结果集中的文档数。以下操作最多返回bios 系列中的5个文档:

db.bios.find().limit( 5 )

limit()对应于 SQL 中的LIMIT语句。

设置结果集的起始点

skip()方法控制结果集的起始点。以下操作会跳过bios 系列中的第一个5文档并返回所有剩余文档:

db.bios.find().skip( 5 )

指定排序规则

整理允许用户为 string 比较指定 language-specific 规则,例如字母和重音标记的规则。

collation()方法为db.collection.find()操作指定整理。

db.bios.find( { "name.last": "hopper" } ).collation( { locale: "en_US", strength: 1 } )

结合光标方法

以下 statements 链游标方法limit()和sort():

db.bios.find().sort( { name: 1 } ).limit( 5 )
db.bios.find().limit( 5 ).sort( { name: 1 } )

这两个语句是等价的; 即:你链接limit()和sort()方法的 order 并不重要。两个 statements return 前五个文档,由'name'上的升序排序 order 确定。

可用的mongoShell游标方法

译者:李冠飞

校对:

定义
行为
例子
cursor.allowDiskUse()
cursor.allowPartialResults()
cursor.batchSize()
cursor.close()
cursor.isClosed()
cursor.collation()
cursor.comment()
cursor.count()
cursor.explain()
cursor.forEach()
cursor.hasNext()
cursor.hint()
cursor.isExhausted()
cursor.itcount()
cursor.limit()
cursor.map()
cursor.max()
cursor.maxTimeMS()
cursor.min()
cursor.next()
cursor.noCursorTimeout()
cursor.objsLeftInBatch()
cursor.pretty()
cursor.readConcern()
cursor.readPref()
cursor.returnKey()
cursor.showRecordId()
cursor.size()
cursor.skip()
cursor.sort()
cursor.tailable()
cursor.toArray()