按字符串数组排序?

时间:2013-10-09 06:36:48

标签: node.js mongodb mongoose

是否可以按照其中一个字段的数组中的值对系列中的文档进行排序?

e.g。

Collection:
{
  keys: ['a', 'b', 'c']
},
{
  keys: ['d', 'e', 'f']
}

使用这样的排序文档:{ keys: -1 }应返回第二个文档,然后返回第一个文档。

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。

这将按数组中的最大值排序,例如

> 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" ] }

因此升序排序与向后降序不同。