参考 > 参考 > mongo Shell方法 > 收集方法 > db.collection.distinct()
db.collection.
distinct
(field,query,options )¶mongo
壳法
此页面记录了mongo
shell方法,并且
没有引用MongoDB Node.js驱动程序(或任何其他驱动程序)方法。对于相应的MongoDB驱动程序API,请改为参考您特定的
MongoDB驱动程序文档。
在单个集合或视图中查找指定字段的不同值,并将结果返回到数组中。
参数 | 类型 | 描述 |
---|---|---|
field |
串 | 要为其返回不同值的字段。 |
query |
文献 | 一个查询,指定要从中检索不同值的文档。 |
options |
文献 | 可选的。指定选项的文档。请参阅选项。 |
该db.collection.distinct()
方法为distinct
命令提供了包装。
注意
结果不得大于最大BSON大小。如果结果超过最大BSON大小,使用聚合管道检索使用不同的值$group
运算符,如描述
检索与聚合管道重复值。
领域 | 类型 | 描述 |
---|---|---|
collation |
文献 | 可选的。 指定 用于操作的排序规则。 归类允许用户为字符串比较指定特定于语言的规则,例如字母大写和重音符号的规则。 排序规则选项具有以下语法: 指定排序规则时,该 如果未指定排序规则,但是集合具有默认排序规则(请参阅参考资料 如果没有为集合或操作指定排序规则,则MongoDB使用先前版本中使用的简单二进制比较进行字符串比较。 您不能为一个操作指定多个排序规则。例如,您不能为每个字段指定不同的排序规则,或者如果对排序执行查找,则不能对查找使用一种排序规则,而对排序使用另一种排序规则。 3.4版的新功能。 |
如果指定的值field
是一个数组,
db.collection.distinct()
则将数组的每个元素视为一个单独的值。
例如,如果一个字段具有作为它的值,则
认为,和作为单独的值。[ 1, [1], 1 ]
db.collection.distinct()
1
[1]
1
有关示例,请参见返回数组字段的不同值。
如果可能,db.collection.distinct()
操作可以使用索引。
索引也可以涵盖
db.collection.distinct()
操作。有关索引涵盖的查询的更多信息,请参见涵盖的查询。
在事务中执行不同的操作:
对于未分片的集合,您可以在舞台上使用
db.collection.distinct()
method /
distinct
command以及聚合管道$group
。
对于分片集合,不能使用
db.collection.distinct()
方法或
distinct
命令。
重要
在大多数情况下,与单文档写入相比,多文档事务产生的性能成本更高,并且多文档事务的可用性不应代替有效的架构设计。在许多情况下, 非规范化数据模型(嵌入式文档和数组)对于您的数据和用例将继续是最佳的。也就是说,在许多情况下,对数据进行适当的建模将最大程度地减少对多文档交易的需求。
有关其他事务使用方面的注意事项(例如运行时限制和oplog大小限制),另请参见 生产注意事项。
从MongoDB 4.2开始,如果发出db.collection.distinct()
断开连接的客户端在操作完成之前断开连接,则MongoDB将标记db.collection.distinct()
为终止(即killOp
在操作上)。