Mongo 不同方法的默认顺序是什么?
What is the default ordering of Mongo distinct method?
我的库存收集如下:
{ "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] }
{ "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] }
{ "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" }
{ "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] }
Mongo 文档指定不同的命令如下:
Finds the distinct values for a specified field across a single
collection. distinct returns a document that contains an array of the
distinct values.
在 dept 字段和 SKU 字段上执行 distinct returns 如下:
db.inventory.distinct( "dept" )
输出:[ "A", "B" ]
db.inventory.distinct( "item.sku" )
输出:[ "111", "222", "333" ]
这清楚地表明了不同的命令顺序,默认情况下取决于将文档插入集合的顺序。
但是理想情况下,像大小这样的数组字段 (db.inventory.distinct( "sizes" )
) 应该 return ["S", "M", "L"]
但反过来 returns [ "M", "S", "L" ]
此行为仅在 _id 字段上添加了默认索引,没有其他字段索引。
对 mongo 的独特实施的任何见解都会有所帮助。提前致谢。
PS:我的要求是一个包含用户元数据(userId,密码,createdDate)的集合A,我在A(userId字段)上使用distinct并创建文档在另一个集合 B 中保存与用户相关的数据(如订单)的每日快照。
典型的 B 文件是这样的:
{
日期:日期时间,
userData:[{user0 的订单},{user1 的订单} ...]
}
月底,我需要汇总users0的订单数据。
用户元数据可以不断增加新用户,所有用户几乎都有每日订单activity。因此 mongo distinct 的默认排序在这里很重要。
无法保证返回的订单结果,因此您应该假设它是任意的。
如果您需要特定顺序的结果,只需在查询中添加 .sort()
。
我的库存收集如下:
{ "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] }
{ "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] }
{ "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" }
{ "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] }
Mongo 文档指定不同的命令如下:
Finds the distinct values for a specified field across a single collection. distinct returns a document that contains an array of the distinct values.
在 dept 字段和 SKU 字段上执行 distinct returns 如下:
db.inventory.distinct( "dept" )
输出:[ "A", "B" ]
db.inventory.distinct( "item.sku" )
输出:[ "111", "222", "333" ]
这清楚地表明了不同的命令顺序,默认情况下取决于将文档插入集合的顺序。
但是理想情况下,像大小这样的数组字段 (db.inventory.distinct( "sizes" )
) 应该 return ["S", "M", "L"]
但反过来 returns [ "M", "S", "L" ]
此行为仅在 _id 字段上添加了默认索引,没有其他字段索引。
对 mongo 的独特实施的任何见解都会有所帮助。提前致谢。
PS:我的要求是一个包含用户元数据(userId,密码,createdDate)的集合A,我在A(userId字段)上使用distinct并创建文档在另一个集合 B 中保存与用户相关的数据(如订单)的每日快照。 典型的 B 文件是这样的: { 日期:日期时间, userData:[{user0 的订单},{user1 的订单} ...] }
月底,我需要汇总users0的订单数据。 用户元数据可以不断增加新用户,所有用户几乎都有每日订单activity。因此 mongo distinct 的默认排序在这里很重要。
无法保证返回的订单结果,因此您应该假设它是任意的。
如果您需要特定顺序的结果,只需在查询中添加 .sort()
。