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 };