2014-09-25 2 views
1

Постановка задачи: Опция рода collection.findAndModify() всегда обновляет наименьшее значение в данных документах MongoDB.Nodejs MongoDB findAndModify опция сортировки не работает

Пример данных:

{ "State" : "Florida", "Temperature" : 83 } 
{ "State" : "Florida", "Temperature" : 28 } 
{ "State" : "Florida", "Temperature" : 82 } 
{ "State" : "Any other", "Temperature" : 58 } 
{ "State" : "Florida", "Temperature" : 33 } 

Требование:
Добавить month_high: правда, против самой высокой температуры док.

NodeJS код:

var query = { 
    'State': "Florida" 
}; 
var sort = ['Temperature', 'desc']; 
var operator = { 
    '$set': { 
    'month_high': true 
    } 
}; 
var options = { 
    'new': true 
}; 

db.collection('readings').findAndModify(query, sort, operator, options, function(err, doc) { 
if (!doc) { 
    console.log('no doc'); 
    } else { 
    console.log(doc); 
    }; 
}); 

Результат всегда одинаковый, т.е. документ с низкой температурой обновляется. С приведенными выше данными результат: { "State" : "Florida", "Temperature" : 28, "month_high" : true }
Теперь, чтобы проверить поведение сортировки, я также изменил его в порядке возрастания, но тот же результат, он всегда поднимает наименьшую температуру, независимо от того, какой порядок данных до или после сортировки.

Вопрос:
Можете ли вы сказать мне, что и где я делаю неправильно?

+0

я могу использовать обходной путь или два, но я действительно хотел бы видеть findAndModify сортировки вариант работы. Благодарю. –

ответ

1

Ваш sort параметр не в правильном формате. Любой из них должен работать:

var sort = [['Temperature', 'desc']]; 

ИЛИ

var sort = { Temperature: -1 }; 
+0

:) Спасибо! ---------------- –

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