是否可以通过它们在其中一个字段的数组中的值对集合中的文档进行排序?
例如
Collection:
{
keys: ['a', 'b', 'c']
},
{
keys: ['d', 'e', 'f']
}
使用这样的排序文档:{ keys: -1 }
它应该返回第二个文档,然后是第一个文档。
是的,这是可能的。
这将按数组中的最大值排序,例如
> db.xoo.find().sort({"keys" : -1});
{ "_id" : ObjectId("5254fc54fd6d6c31bdde3ecd"), "keys" : [ "g", "a", "a" ] }
{ "_id" : ObjectId("5254fc1ffd6d6c31bdde3eca"), "keys" : [ "d", "e", "f" ] }
{ "_id" : ObjectId("5254fc24fd6d6c31bdde3ecb"), "keys" : [ "f", "a", "a" ] }
{ "_id" : ObjectId("5254fc19fd6d6c31bdde3ec9"), "keys" : [ "a", "b", "c" ] }
{ "_id" : ObjectId("5254fc28fd6d6c31bdde3ecc"), "keys" : [ "0", "a", "a" ] }
如果按升序排序,它将考虑数组中的最小值:
> db.xoo.find().sort({"keys" : 1});
{ "_id" : ObjectId("5254fc28fd6d6c31bdde3ecc"), "keys" : [ "0", "a", "a" ] }
{ "_id" : ObjectId("5254fc54fd6d6c31bdde3ecd"), "keys" : [ "g", "a", "a" ] }
{ "_id" : ObjectId("5254fc24fd6d6c31bdde3ecb"), "keys" : [ "f", "a", "a" ] }
{ "_id" : ObjectId("5254fc19fd6d6c31bdde3ec9"), "keys" : [ "a", "b", "c" ] }
{ "_id" : ObjectId("5254fc1ffd6d6c31bdde3eca"), "keys" : [ "d", "e", "f" ] }
所以升序排序与倒序降序不同。