Nodejs MongoDB findAndModify排序选项不起作用

时间:2014-09-25 23:01:57

标签: node.js mongodb sorting

问题陈述: 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 }
现在,为了检查排序的行为我也将其更改为升序,但同样的结果是,它总是获取最小的温度,无论排序之前或之后数据的顺序如何。

问题:
你能告诉我我做错了什么和在哪里吗?

1 个答案:

答案 0 :(得分:1)

您的sort参数格式不正确。这些都应该有效:

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

OR

var sort = { Temperature: -1 };