db.collection.distinct()
在本页面
定义
db.collection.
distinct
(字段,查询,选项)在单个集合或视图中查找指定字段的不同值,并在 array 中返回结果。
参数 | 类型 | 描述 |
---|---|---|
| string | 要为其返回不同值的字段。 |
| document | 一个查询,指定从中检索不同值的文档。 |
| document | 可选的。指定选项的文档。见选项。 |
db.collection.distinct()方法在不同命令周围提供 wrapper。
注意
结果不得大于最大BSON 大小。如果结果超过最大 BSON 大小,请使用聚合管道使用$group operator 检索不同的值,如使用聚合管道检索不同的值中所述。
选项
领域 | 类型 | 描述 |
---|---|---|
| document | 可选的。指定要用于操作的整理。整理允许用户为 string 比较指定 language-specific 规则,例如字母和重音标记的规则。 排序规则选项具有以下语法: collation: { locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } 指定排序规则时, |
行为
在分片集群中,不同命令可能返回孤立文档。
数组字段
如果指定的field
的 value 是 array,则db.collection.distinct()将 array 的每个元素视为单独的 value。
例如,如果某个字段的 value 为[ 1, [1], 1 ]
,则db.collection.distinct()将1
,[1]
和1
视为单独的值。
对于 example,请参阅返回 Array 字段的不同值。
索引使用
如果可能,db.collection.distinct()操作可以使用索引。
索引也可以覆盖 db.collection.distinct()操作。有关索引涵盖的查询的详细信息,请参阅涵盖查询。
事务
在事务中执行不同的操作:
对于未分片的集合,您可以在舞台上使用
db.collection.distinct()
方法/distinct
命令以及聚合管道$group
。对于分片集合,不能使用
db.collection.distinct()
方法或distinct
命令。要查找分片集合的不同值,请在
$group
阶段使用聚合管道。有关详细信息,请参见“ 区别操作 ”。
重要
在大多数情况下,与单文档写入相比,多文档事务产生的性能成本更高,并且多文档事务的可用性不应替代有效的架构设计。在许多情况下, 非规范化数据模型(嵌入式文档和数组)将继续是您的数据和用例的最佳选择。也就是说,在许多情况下,适当地对数据建模将最大程度地减少对多文档交易的需求。
有关其他事务使用方面的注意事项(例如运行时限制和操作日志大小限制),另请参见 生产注意事项。
客户端断开
从MongoDB 4.2开始,如果发出db.collection.distinct()
断开连接的客户端在操作完成之前断开连接,则MongoDB将标记db.collection.distinct()
为终止(即killOp
在操作上)。
例子
这些示例使用包含以下文档的inventory
集合:
返回字段的不同值
以下 example 从inventory
集合中的所有文档返回字段dept
的不同值:
该方法返回以下 array 不同的dept
值:
返回嵌入字段的不同值
以下 example 从inventory
集合中的所有文档返回嵌入在item
字段中的字段sku
的不同值:
该方法返回以下 array 不同的sku
值:
也可以看看
点符号有关访问嵌入文档中的字段的信息
返回 Array 字段的不同值
以下 example 从inventory
集合中的所有文档返回字段sizes
的不同值:
该方法返回以下 array 不同的sizes
值:
有关distinct()和 array 字段的信息,请参阅行为部分。
使用 distinct 指定 Query
以下 example 从dept
等于"A"
的文档中返回嵌入在item
字段中的字段sku
的不同值:
该方法返回以下 array 不同的sku
值:
指定排序规则
version 3.4 中的新内容。
整理允许用户为 string 比较指定 language-specific 规则,例如字母和重音标记的规则。
集合myColl
具有以下文档:
以下聚合操作包括整理选项:
有关归类字段的说明,请参阅整理文件。
译者:李冠飞
校对:
最后更新于