某人Michael
拥有favoriteFruits = [ { name: 'Apple'}, {name: 'Banana'} ]
我要更改其顺序
[ { name: 'Apple'}, {name: 'Banana'} ]
至
[ { name: 'Banana'}, {name: 'Apple'} ]
所以我做到了:
Members.findOne({ name: 'Michael' }, function(err, member){
member.favoriteFruits = [ {name: 'Banana'}, {name: 'Apple'} ]
member.save(function (err, result){
// result is favoriteFruits = [ { name: 'Banana'}, {name: 'Apple'} ]
// result is correct, but real db's order not changed.
})
})
即使result
的{{1}}的顺序是正确的,但是db的顺序也没有改变。顺序不变。
我猜 MongoDB 认为这项工作是无用的,因此它什么也不做。如何更新订单?
答案 0 :(得分:0)
最有可能的猫鼬没有注意到阵列之间的差异。您可以告诉Mongoose使用Document.prototype.markModified()
方法实际上已经修改了该字段。
例如:
Members.findOne({ name: 'Michael' }, function(err, member) {
member.favoriteFruits = [{ name: 'Banana' }, { name: 'Apple' }];
member.markModified('favoriteFruits');
member.save(function (err, result) {
});
});