Mongoose findOneAndUpdate - 使用另一个更新一个字段

时间:2017-11-07 11:54:54

标签: node.js mongodb mongoose

考虑这个架构:

var UserSchema = new Schema({
    ...
    user_id: {type:String},
    previous_selection: {type:String},
    current_selection: {type:String}
});

我需要编写一个函数,该函数会使用previous_selection的{​​{1}}值更新current_selection的值。

有没有办法用user_id执行此操作?

像 -

findOneAndUpdate

或者有更好的方法来实现这个吗?我是否必须执行MyModel.findOneAndUpdate( { user_id: id }, { $set: {"previous_selection": current_selection }}, {}, callback ); 然后更新?

1 个答案:

答案 0 :(得分:3)

根据您的关注,您可以执行此操作来更新整个集合。

db.MyModel.find({}).snapshot().forEach(
function (elem) {
    db.MyModel.update(
        {
            _id: elem._id
        },
        {
            $set: {
                "previous_selection": elem.current_selection
            }
        }
    );
});

否则你可以通过id找到并且可以使用相应的current_selection进行更新。