问题陈述: collection.findAndModify()的sort选项始终更新给定mongoDB文档中的最低值。
示例数据:
{ "State" : "Florida", "Temperature" : 83 }
{ "State" : "Florida", "Temperature" : 28 }
{ "State" : "Florida", "Temperature" : 82 }
{ "State" : "Any other", "Temperature" : 58 }
{ "State" : "Florida", "Temperature" : 33 }
要求:
添加month_high:true,对应最高温度doc。
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 :(得分:1)
您的sort
参数格式不正确。这些都应该有效:
var sort = [['Temperature', 'desc']];
OR
var sort = { Temperature: -1 };