2016-12-01 2 views
0

Я хочу отсортировать результаты поиска по убыванию. Как я могу обработать его с помощью $ exists: true? Я хочу сортировать длину массива.Сортировка данных по длине массива

MongoDB

{ 
    "likelist" : [ 
     "5778173453f8f28a119d6eaa", 
     "5778173453f8f28a119d6eab" 
    ], 
    "unlikelist" : [ 
     "57781e7978ac42eb027d3728" 
    ] 
} 

Node.js

Data.find({ 
    $and: [ 
     query, 
     { "likelist": { $exists: true } } 
    ] 
}).limit(req.body.limit).lean().exec(function (err,data) { 
    console.log(data) 
}); 
+0

почему не вы использовать '.sort ({» _id ": 1})' –

+0

Потому что я хочу сортировать по длине массива. Самое высокое первое. – Tony

ответ

0

возможно что-то подобное будет работать

Data.find({ 
    $and: [ 
     query, 
     { "likelist": { $exists: true } } 
    ] 
}).sort({"_id":1}).limit(req.body.limit).lean().exec(function (err,data) { 
    console.log(data) 
}); 

если вы хотите что-то другое, то пожалуйста, скажите

Примечание: Взаимосвязь между порядком значений ObjectId и времени генерации не является строгим в рамках одной второй

Фор информация прочитать: http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-BSONObjectIDSpecification

+0

Привет, я хочу сортировать по длине массива. С _id: 1 это не сработает. – Tony

+0

, что невозможно, по крайней мере, не по нескольким полям –

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