MongoDb如何使用list,empty list和null值进行排序?

时间:2014-01-21 13:22:44

标签: list mongodb sorting null empty-list

我们在Ubuntu 12.04计算机上本地使用MongoDB 2.4.9。我们将以下查询放入mongo控制台(db.a是一个空集合):

> db.a.insert({'a': null})
> db.a.insert({'a': [null]})
> db.a.insert({'a': null})
> db.a.insert({'a': []})
> db.a.insert({'a': [[]]})

> db.a.find().sort({'a': 1})
{ "_id" : ObjectId("52de6dd4ff91f5efcb1efacc"), "a" : [ ] }
{ "_id" : ObjectId("52de6dbaff91f5efcb1efac9"), "a" : null }
{ "_id" : ObjectId("52de6dbeff91f5efcb1efaca"), "a" : [  null ] }
{ "_id" : ObjectId("52de6dc8ff91f5efcb1efacb"), "a" : null }
{ "_id" : ObjectId("52de6debff91f5efcb1efacd"), "a" : [  [ ] ] }

我们正在关注http://docs.mongodb.org/manual/reference/method/cursor.sort,它将类型的顺序设置为:

MinKey (internal type)
Null
Numbers (ints, longs, doubles)
Symbol, String
Object
Array
...

所以我希望结果是:

null
null
[]
[null]
[[]]

基于几个查询,我们假设不是array,而是比较它们的第一个元素(包括它的类型)。如果使用相等ObjectId。但根据类型顺序,内部MinKey应该在null之前。 那么MongoDb如何在实际中排序价值呢?

P.S。由于mongo是开源的,因此答案应该在这里:https://github.com/mongodb/mongo/tree/master

0 个答案:

没有答案