如果密钥不存在则将值推送到数组Mongoose

Gle*_*ift 4 database mongoose mongodb nosql node.js

给定mongoose架构

var SomeSchema = new Schema({
    // ...
    members: [
        {
            name: String,
            username: String
        }
    ]
});
Run Code Online (Sandbox Code Playgroud)

从我的代码我想推送对象,members但只有在数组中没有给定的用户名时.我怎么能用猫鼬做呢?

Ger*_*osi 34

您可以在更新查询的条件部分中检查用户名:

var conditions = {
    _id: id,
    'members.username': { $ne: 'something' }
};

var update = {
    $addToSet: { members: { name: 'something', username: 'something' } }
}

SomeModel.findOneAndUpdate(conditions, update, function(err, doc) {
    ...
});
Run Code Online (Sandbox Code Playgroud)