我想使用$addToSet
用猫鼬将新对象到蒙戈阵列:检查嵌套对象键[值]在猫鼬阵列,更新前
我有两个型号:
var itemSchema = mongoose.Schema({
itemId: Number,
save_date: {type: Date, default: Date.now}
});
var UserSchema = new Schema({
...
items: [itemSchema]
});
var User = mongoose.model('User', UserSchema);
我想用猫鼬在items
数组中添加一个item
,但前提是该项不存在。
目前,使用$addToSet
仍在增加重复,因为,我认为的save_date邮票是为每个项目不同:
User.findByIdAndUpdate(
id,
{$addToSet: {item: {itemId: newItem} } },
{upsert: true},
function (err, saveItem){
if (err) {return handleError(err)};
res.send(saveItem);
}
);
这会导致用户条目:
"name": "Vinnie James"
"items" : [
{
"itemId" : 123,
"_id" : ObjectId("587b10259233c524454d745d"),
"save_date" : ISODate("2017-01-15T06:01:09.850Z")
},
{
"itemId" : 123,
"_id" : ObjectId("587b17398ed7052b1e5196bc"),
"save_date" : ISODate("2017-01-15T06:31:21.263Z")
}
]
是它可能在添加条目之前检查itemId
是否存在,以避免如上所示有两个"itemId": 123
?
如果有更好的方式来构建模型来达到同样的结果,我很高兴地考虑以及
我想我可以先运行一个数据库查询的项目,只做更新,如果'itemId'不存在,但是这感觉有点圆a - 关于 –