【问题标题】:Push value to Array if key does not exist Mongoose [duplicate]如果键不存在,则将值推送到数组 Mongoose [重复]
【发布时间】:2014-12-07 08:42:32
【问题描述】:

给定猫鼬模式

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

从我的代码中,我想将对象推送到members,但前提是数组中还没有给定的用户名。我怎样才能用猫鼬做到这一点?

【问题讨论】:

  • 如果集合为空,则可以通过查询如 db.collection.find({'member.username':username}) 将对象推送到成员数组中

标签: node.js mongodb mongoose database nosql


【解决方案1】:

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

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

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

SomeModel.findOneAndUpdate(conditions, update, function(err, doc) {
    ...
});

【讨论】:

  • 谢谢!我遇到了同样的问题。我想指出,如果您想在具有username 的成员已经存在的情况下返回错误消息,您应该检查findOneAndUpdate 返回的对象上的doc === null
猜你喜欢
  • 2018-08-09
  • 2021-01-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
相关资源
最近更新 更多