【发布时间】:2019-03-06 11:56:17
【问题描述】:
有一个人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的favoriteFruits的顺序是正确的,但是db的顺序并没有改变。顺序没有改变。
我猜 MongoDB 认为这项工作是无用的任务,所以它什么也不做。如何更新订单?
【问题讨论】:
-
数组应该保持顺序。
-
除了结果问题,为什么你不使用
findOneAndUpdate而不是两个单独的查询? -
@AnkitAgarwal 那么有没有办法实现呢?
-
@Ved 有时我使用,有时不使用。尤其是当我必须处理查询数据时。
-
@AnkitAgarwal 也许我应该添加另一个键值对,例如
[{ name: 'Banana', index: 0, { name: 'Apple', index: 1 }] 并按索引排序...?我希望会有更简单的方法....
标签: javascript node.js mongodb mongoose