【发布时间】:2019-04-27 23:38:45
【问题描述】:
我无法解决这个问题(并希望一一避免循环更新),请帮帮我。
我有一个 fambio 文档(它有自己的 FamilyModel),它是在用户提供以下信息后创建的:
{
name: 'john',
lname: 'doe',
}
现在,在上述信息保存后,用户在后端进行一些处理后提供更多关于家庭的信息:
let familyArr = [
{ _id: 1234, name: 'Jenny', lname: 'doe', relation: 'mother' },
{ _id: 2345, name: 'Jawn', lname: 'doe', relation: 'father' },
{ _id: 3456, name: 'Jane', lname: 'doe', relation: 'sister' },
{ _id: 4567, name: 'Daisy', lname: 'wick', relation: 'pupper' }
]
总而言之,FamilyModel 架构如下所示:
const FamilyModel = mongoose.Schema({
name: {type: String, required: true},
lname: {type: String, required: true},
family: [relationshipSchema]
}, {
timestamp: true
});
const relationshipSchema = mongoose.Schema({
name: {type: String, required: true},
lname: {type: String, required: true},
relation: {type: String, required: true}
}, {
required: false,
timestamp: true
});
现在,John 有一个系列对象数组(归档类型 Array)并尝试像这样插入该对象数组:
我尝试了多种选择:
db.fambio.updateOne({_id: 1111}, { $set: { family: familyArr }})
db.fambio.findOneAndUpdate({_id: 1111}, { $push: { family: familyArr }});
db.fambio.update({_id: 1111}, $addToSet: { 'family': familyArr}});
将构造的对象直接插入字段没有任何作用。当我一次插入一个时,它会更新。
我应该如何编写查询来更新/追加一个对象数组到一个数组类型的字段中,并维护自己的架构。
【问题讨论】:
-
您从第一个查询中得到的响应是什么?您是否尝试过使用
.update()进行的第一个查询可能是?你传递的数组也应该遵循关系模式。 -
@saikatchakrabortty 保存用户信息后,一旦成功保存,我将获得保存的文档作为回报,并带有 _id。保存()/插入操作后,我尝试更新“family”:[] Array Field key with Array of Objects 返回空 {} 或更新:0
-
使用
{multi: true}更新多个文档 -
@mexo 谢谢,能否举个例子,不胜感激
-
db.collection.update(<query>,<update>,{multi:true})