2016-12-27 188 views
0

我正在使用findOneAndUpdate更新mongodb文檔,現在還不確定。正在更新mongo db文檔

我的文檔例如:

"_id" : ObjectId("5860f0ec197e7a05812fbddd"), 
    "username" : "krapali", 
    "last_updated" : ISODate("2016-12-26T10:29:00.557Z"), 
    "max" : 6, 
    "min" : 6, 
    "data" : [{ 
        "dataAdded" : { 
          "min" : 6, 
          "max" : 6, 
        }, 
        "dataAdded" : { 
          "min" : 5, 
          "max" : 7, 
        } 

    }], 
    "data_count" : 2 

如果觀察上述樣品文件,你會看到它對象的陣列。

每當我嘗試更新我的文檔時,我將與我3個字段username, max and min。取決於用戶名我需要添加/推入數據數組一個新的元素,以及我需要更新最小和最大字段和增加數據計數每一個新的更新。

有些人可以幫我怎麼做嗎?

+0

你可以添加你已經嘗試到目前爲止我們知道哪部分是不是爲你工作? – Veeram

+0

你會更新用戶名嗎?還是用它來查找記錄? –

+0

它會找到用戶名 – Shubham

回答

0

邏輯非常簡單。首先,調用db來獲取你想要更新的文檔,並在這裏創建一個變量update,無論什麼更新需要完成。只需使用findOneAndUpdate

// input to function username, min and max 
modal.findOne({username: username}, function(err, data){ 
    var minmax = {dataAdded: {min: min, max:max}}; 
    var update = { 
     $push: { 
      data: minmax 
     } 
    }; 
    update.$set = { 
     data_count: data.data.length + 1, 
     max: max, 
     min: min 
    }; 

    modal.findOneAndUpdate({username: username}, update, {new: true}, function(err. updatedDoc){ 
     // do whatever you want with updated document 
    }) 
}) 
0

它非常容易使用findOneAndUpdate方法

modal.findOneAndUpdate({username: username},{ 
    $push: { 
    data: { 
     dataAdded: { 
     min: minValue, 
     max: maxValue 
     } 
    } 
    }, 
    $set: { 
    min: minValue, 
    max: maxValue 
    }, 
    $inc: { 
    data_count: 1 
    } 
},{ 
upsert: false, 
new: true 
}, function(err, doc) { 
});;