Mongo distinct方法的默认顺序是什么



我的库存收集如下:

{ "_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文档指定了不同的命令如下:

在单个收集distinct返回一个文档,该文档包含不同的价值。

在执行不同的dept字段和SKU字段时,返回如下:

db.inventory.distinct( "dept" )

输出:[ "A", "B" ]

db.inventory.distinct( "item.sku" )

输出:[ "111", "222", "333" ]

这清楚地表明了不同的命令顺序,默认情况下,这取决于文档插入集合的顺序。

但是数组上的不同字段,如理想情况下的大小(db.inventory.distinct( "sizes" )(应该返回["S", "M", "L"],但反过来返回[ "M", "S", "L" ]

这种行为是只在_id字段上添加默认索引,而不添加其他字段索引。

任何关于mongo独特实现的见解都是有益的。提前谢谢。

PS:我的要求是集合a包含用户元数据(userId、password、createdDate(,我在a上使用distinct(userId字段(,并在另一个集合B中创建文档,以保持订单等用户相关数据的每日快照。典型的B文件如下:{日期:日期时间,userData:[{user0的订单},{user1的订单}…]}

在月底,我需要聚合用户0的订单数据。用户元数据可以不断添加新用户,所有用户几乎每天都有订单活动。所以mongo的默认排序在这里很重要。

不能保证返回的订单结果,因此您应该假设它是任意的。

如果您需要特定顺序的结果,只需在查询中添加一个.sort()即可。

最新更新