这是一个mongoDB文档,我需要添加一些数据:
{
"_id" : "7KufvMQFyyeuKFP68",
"target" : {
"10" : "true",
"id" : "ePce6fBAHx9KeKjuM"
}
}
我需要更新target
中的现有字段,或者添加它们(如果它们不存在)。这就是我试过的:
var result = { "30": "true", "id" : "ePce6fBAHx9KeKjuM" };
Collection.upsert(
{ _id: id },
{ $set: { target: result } }
);
但是这个10
被30
取代,但我期待这个结果:
{
"_id" : "7KufvMQFyyeuKFP68",
"target" : [{
"10" : "true",
"30" : "true",
"id" : "ePce6fBAHx9KeKjuM"
}]
}
答案 0 :(得分:0)
您似乎想要更新对象数组。该数组是您的target
字段,因此请确保该类型是架构中的数组。要更新阵列,请按您选择的ID或字段选择阵列。
此代码查找字段并添加"30" : "true",
并将其他信息保留在数组内的对象中。希望它有所帮助。
var userSchema = new mongoose.Schema({
name: String,
target : []
})
var User = mongoose.model("User", userSchema);
//creat a documenent
var user1 = new User({
name : "jack",
target :[{
"10" : "true",
"id" : "ePce6fBAHx9KeKjuM"
}]
})
user1.save(user1, function(err, user){
console.log(user)
})
User.findOneAndUpdate(
{"name" : "jack"},
{safe : true, upsert : true, new :true},
function(err, model){
model.target[0]["30"] = "true"
console.log(model.target)
}
)