【发布时间】:2019-01-17 17:45:56
【问题描述】:
我正在尝试将对象插入对象(不是数组)。我该怎么做?
这是我试图实现的数据结构示例。
users:{
'0': {
name: 'Tom',
age: '19',
car: 'Mazda 3',
},
'1': {
name: 'Ryan',
age: '27',
car: 'BMW',
},
'2': {
name: 'Jake',
age: '22',
car: 'Audi',
}
}
users 是文档中包含用户集合的字段。我想将新用户添加到 users 字段,当我添加它们时,用户内部的键应该相应地增加。
所以新添加的对象应该是:
'3': {
name: 'Sam',
age: '24',
car: 'Honda',
}
这是我目前正在做的:
let newUser = {
name: 'Sam',
age: '24',
car: 'Honda',
};
db.collection('Group').findOneAndUpdate({
'_id': new ObjectId(groupId),
}, {
'$set': {
'users.$': newUser,
},
}, {
returnOriginal: false,
}
})
提前致谢。
【问题讨论】:
-
让我快速更新问题。
users是文档中的一个字段。我想将新的用户对象添加到users字段。另外,当我添加一个新的用户对象时,我希望users中的键增加。 -
@thishandp7 我认为你应该改变你的模型。 users 不应该是一个对象,它应该是一个数组,那么你的问题就会得到解决。否则您必须先获取用户对象的长度,然后使用
{length+1:{your user object}}创建一个新对象,然后您必须将此创建的对象推送到您的用户对象中。 -
@Yogesh.Kathayat 因为你可以做复杂的事情,为什么要简单:)
-
@Yogesh.Kathayat 这就是我创建要插入文档的对象的方式。另外,我正在使用 $set 运算符。 $set 运算符将现有数据替换为新数据。它不会像 $push 那样为数组添加一个新的。是的,我同意将模型更改为使用数组。但是,不幸的是,我无法控制数据库。该数据库目前也被其他一些应用程序使用。所以改变模型对我来说不是一个选择。
标签: javascript json mongodb