我希望立即使用findOneAndUpdate
来更新mongodb文档。
我的文档示例:
"_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 :(得分: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
})
})
答案 1 :(得分: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 ) {
});;