簡體   English   中英

更新對象數組中的元素在Mongoose中不起作用

[英]update an element inside an array of object is not working in Mongoose

我用貓鼬查詢來更新文檔,在該文檔中我必須檢查文檔_id和對象數組內的另一個id。 我的查詢是:

Survey.findOneAndUpdate({"_id":req.params.id,"inv_users.cmp_user_id":cmp_user_id},
{
 $set:{ "inv_users.$.survey_completed":true}
  }

我需要找到一個帶有_id的文檔,並且只更新survey_completed中的inv_users

const SurveySchema = mongoose.Schema({
    name : {
        type : String,
        require : true,
    },
    company_id: {
        type : Schema.ObjectId,
        require:true
    },
    category : {
        id : Schema.ObjectId,
        name : {
            type : String,
            require : true,
        }
    },
    theme : {
        type : Schema.ObjectId,
    },
    display_type : {
        ui : {
            type : String
        },
        randomization  : {
            type : Boolean,
            default : false,
        },
        skip  : {
            type : Boolean,
            default : false,
        },
        pageno : {
            type : Boolean,
            default : false,
        }
    },
    start_datetime : { 
        type: Date,
    },
    end_datetime : { 
        type: Date,
    },
    logo : { 
        type : String,
    },
    is_header  : {
        type : Boolean,
        default : false,
    },
    is_footer  : {
        type : Boolean,
        default : false,
    },
    header_title : { 
        type: String,
    },
    footer_title : { 
        type: String,
    },
    questions : [{
        question : {
            type : String,
        },
        ans_type : {
            type : String,
        },
        options : [{
            type : String,
        }],
        answers : [{
            answer : {
                type : String,
            },
            cmp_user_id : {
                type : Schema.ObjectId,
            },
            global_user_id : {
                type : Schema.ObjectId,
            },
            date_time : {
                type : Date,
                default:Date.now()
            },
            ip : {
                type : String,
            },
            latitude : {
                type : Number,
            },
            longitude : {
                type : Number,
            }
        }]
    }],

    inv_users : [{
        cmp_user_id : {
            type : Schema.ObjectId,
        },
        email : {
            type : String,
        },
        mail_viewed  : {
            type : Boolean,
            default : false,
        },
        ip : {
            type : String,
        },
        latitude : {
            type : Number,
        },
        longitude : {
            type : Number,
        },
        img_read_code : {
            type : String,
        },
        mail_responsed  : {
            type : Boolean,
            default : false,
        },
        survey_completed  : {
            type : Boolean,
            default : false,
        },
    }]
});

有這個同樣的問題只是把$ set全部取出來並且它起作用了

Survey.findOneAndUpdate({"_id":req.params.id,"inv_users.cmp_user_id":cmp_user_id},
{
"inv_users.$.survey_completed":true
  })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM