【发布时间】:2012-03-17 13:51:50
【问题描述】:
考虑以下 MongoDB 文档:
SomeObject {
nested_objects_ids : [
ObjectId( "1..." ),
ObjectId( "2..." ),
...
ObjectId( "N..." )
]
}
nested_object_ids的长度没有限制。
是否有一种优雅的方法可以在推送任意值(即 ObjectIds)后保持nested_object_ids 数组的排序?
谢谢!
【问题讨论】:
-
你按什么排序?
ObjectId本身?如果您希望它们按应该已经发生的插入顺序排序。 -
+1 这个问题,因为我也想知道是否有一个好的解决方案。据我所知,如果您希望它们按数字排序顺序,您实际上需要以排序形式写回($set)整个数组,而不是简单地使用 $push :anObjectId
-
@Russel,例如,首先插入一个 _id "45..." 的对象,下一个对象有 _id = "42..."。它将被插入到数组的末尾,但我想将它放在 id="45..." 的对象之前。
-
我想我得到了什么你为什么要使用 ObjectIds 进行排序?它们不会按任何有意义的顺序排序。如果您使用 _id 字段的自定义值(例如递增 int)进行覆盖,则会失去 ObjectId 的很多好处,因此我会考虑重新审视您的设计。
标签: arrays mongodb sorting nosql