0
我有一個模式:addToSet如果不存在
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var MySchema = new Schema({
Theme: { type: String },
Style: { type: String },
Brand: { type: String },
UpdatedInfo: [
{
_id:false,
ThisDate: { type: String },
NewInfo: {type: String },
OriginalInfo: {type: String }
}
]
}, { versionKey: false });
然後我做一個更新:
MySchema.update({ Theme: MyTheme }, {
$addToSet: {
UpdatedInfo: {
ThisDate: TheDate,
NewInfo: TheNewInfo,
OriginalInfo: TheOriginalInfo
},
}
},function (err, result) {
next(err,result);
});
該查詢增加了一個新元素UpdatedInfo
陣列每一個新TheDate
,即使TheNewInfo
TheOriginalInfo
與UpdatedInfo
的新元素相同。 我要的是一個新的元素添加到UpdatedInfo
只有如果NewInfo
確實從最新ThisDate
日NewInfo
在UpdatedInfo
數組元素的變化。
眼下UpdatedInfo
數組類似以下內容:
"UpdatedInfo" : [
{
"ThisDate" : "12/15/2015",
"NewInfo" : "12 500:-",
"OriginalInfo" : "15 000:-"
},
{
"ThisDate" : "12/16/2015",
"NewInfo" : "12 500:-",
"OriginalInfo" : "15 000:-"
},
{
"ThisDate" : "12/17/2015",
"NewInfo" : "12 500:-",
"OriginalInfo" : "15 000:-"
}
]
如果UpdatedInfo
爲空,從一開始,就應該第一元素添加進去,即:
"UpdatedInfo" : [
{
"ThisDate" : "12/17/2015",
"NewInfo" : "12 500:-",
"OriginalInfo" : "15 000:-"
}
]
是否有可能? 問候
我的確有UpdatedPrice作爲之前的集合。但它重複了該集合中的數組元素然後... – user1665355
@ user1665355我添加了一些解決方案。 –
好的,謝謝,當你說試試$ elemMatch,你的意思是說你不確定它會工作嗎?:) – user1665355