【发布时间】:2015-10-22 21:15:19
【问题描述】:
我有很多对象要保存到 Mongoose。它们是深层物体。
var obj1 = {
first_name : 'adam',
last_name: 'smith',
car : [{
make: 'honda',
model: 'civic',
colors: [{
name: 'red',
code: 'ff0000'
}]
}]
}
像这样进入匹配模型:
var Owner = new Schema({
first_name: String,
last_name: String,
cars:[{
make: String,
model: String
colors: [{
name: String,
code: String
}]
}]
});
这一切都很好,花花公子,除非亚当有第二条记录:
var obj2 = {
first_name : 'adam',
last_name: 'smith',
car : [{
make: 'ford',
model: 'focus',
colors: [{
name: 'blue',
code: '0000ff'
}]
}]
}
var obj3 = {
first_name : 'adam',
last_name: 'smith',
car : [{
make: 'honda',
model: 'civic',
colors: [{
name: 'blue',
code: '0000ff'
}]
}]
}
当我执行以下操作时,每个都会完全覆盖前一个:
Owner.findOneAndUpdate({first_name:"adam", last_name: "smith"}, obj2, {upsert: true});
如何让猫鼬在没有新记录时创建新记录,但在有时附加到 car 数组?如果汽车已经存在,附加到颜色数组?
为了让事情更有趣,我的数据结构并不一致。它适用于给定的集合,但我的每个集合都是动态设置的,因此模型可能有很多层深并且具有任何给定的键。
【问题讨论】: