簡體   English   中英

Mongodb findOneAndUpdate 函數正在插入新文檔

[英]Mongodb findOneAndUpdate function is inserting new document

每當我進行更新 api 調用時,我只需要更新 serviceActiveFlag 狀態。更新 api 調用后,我可以看到創建了一個空車輛數組的新文檔,如下所示。

_id:59c76073c11d3929148f500f
vehicle:Array
_v:0

id 字段將在每次 put api 調用時覆蓋。

有人可以幫我解決這個問題嗎?

模式

var localTransportSchema = new Schema({

        name: { type: String, required: false, trim: true },
        contact: {
            addressLine1: { type: String, required: false },        
            serviceActiveFlag: { type: String, required: false, enum: ['Y', 'N'] },
    }, 
    vehicle: [{
        vehicleType:{ type: String, required: false, enum: ['sedan', 'hatchback', 'suv', 'mpv', 'luxury'] },        
    }]
});
module.exports.accomodationModel = mongoose.model(collection, localTransportSchema);

控制器

var updates = {
            $set: {
                "contact.addressLine1": req.body['addressLine1'],                
                "contact.serviceActiveFlag": req.body['serviceActiveFlag']
            }
    };

    transportModel.findOneAndUpdate({ "name": req.body['providerName']},
        updates, { returnOriginal: false, upsert: false }, function (err, doc) {
            if (err) {
                logger.error("Error while updating record : - " + err.message);
                return res.status(409).json({
                    "Message": "Error while updating transport details for provider " + req.body['providerName'] + " in transport details table"
                });
            } else if (doc === null) {
                logger.error("Error while updating record in transport details : - unable to update database");
                return res.status(409).json({
                    "Message": "Error while updating transport details for provider " + req.body['providerName'] + " due to " + err.message
                });
            }
        });

dbModel.findOneAndUpdate() of dbModel.findOneAndUpdate()僅當您的過濾器查詢(where claus)未能找到現有文檔時才插入新文檔,即您的集合中不存在匹配的文檔。 所以貓鼬會將新文檔插入到集合中。 這類似於upsert:true of update()

參考: 關於 findOneAndUpdate 的官方文檔

暫無
暫無

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

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