2013-10-09 5 views
0

Возможно ли сортировать документы в коллекции по значениям, которые они имеют в массиве одного из своих полей?Сортировать по массиву строк?

например.

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

С сортировкой документом, как эти: { keys: -1 }, который должен вернуть второй документ затем первый документ.

ответ

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

Так восходящих родах не то же самое, как нисходящие назад.

Смежные вопросы