Nodejs的MongoDB findAndModifysorting选项不起作用

问题陈述: collection.findAndModify()的sorting选项总是更新给定mongoDB文档中的最低值。

示例数据:

{ "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 }
现在,为了检查sorting的行为,我也把它改成了升序,但是同样的结果,无论sorting前后数据的顺序如何,它总是能够检测到最小的温度。

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

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

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

要么

 var sort = { Temperature: -1 };