在嵌套数组中查找和更新对象

时间:2019-04-13 07:57:42

标签: mongodb mongoose mongodb-query

我有这个猫鼬模式

{
    id: mongoose.Schema.Types.ObjectId,
    name: String,
    initialMailSended: Boolean,
    email: String,
    users: [{
        id: mongoose.Schema.Types.ObjectId,
        name: String,
        surname: String,
        email: String,
        signedUp: Boolean,
        company: String,
        email: String,
        attending: String,
        accomod: String,
        program: String,
        food: String,
        other: String,
        allFood: String,
        form: [{
            name: String,
            value: String,
        }]
    }]
}

我需要做的是编写一个猫鼬查询,该查询通过id查找此对象,并在此对象中找到用户并对其进行更新。 我尝试了各种查询,但没有找到任何可行的方法。

1 个答案:

答案 0 :(得分:0)

对于您的问题,您可以像这样更新用户

db.getCollection('collection').findOneAndUpdate(
    {
      _id:ObjectId("5cb19dbc85fdcb7868400107"),       // collection id
     'users._id':ObjectId("5cb19dbc85fdcb7868400185") // user id inside collection
    },

    {$set: {'users.$.name': 'new value'}}            // set name field
)

也请参见此问题Updating a Nested Array with MongoDB