我想使用$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 - 關於 –