如何插入新对象而不删除前一个对象

问题描述 投票:1回答:1

我正在设置我的新RocketChat服务器。

问题是实际上,如果它们不是由CAS创建的,则Rocket Chat不支持CAS帐户。

我们有旧帐户。

我可以通过这样做添加CAS功能:

在Windows上使用MongoDB Compass软件输入MongoDB数据库,并使用我的键盘在services对象中添加cas对象...

https://i.imgur.com/AIMAlA6.png

因此,您可以看到我可以通过这样做添加CAS功能。

我想用代码做到这一点,所以我这样做:

1 - 输入rocketchat_mongo docker

2 - 使用管理员登录连接并使用rocketchat数据库

3 - 执行此代码

db.users.update({"name":"Fabien Rousseau"},{ $set: {"services" : { "cas" : { "external_id" : "fabien.rousseau", "version" : 2 }}}})

命令没问题,因为在服务中添加了CAS对象,但是它删除了其他对象,如密码和恢复......

我只想添加CAS对象而不删除其他对象...

我的预期结果是在第一张图片中:CAS帐户。

实际上在命令之后我有这个:

https://i.imgur.com/vA1i3mx.png

请帮我调整命令以避免删除服务对象中的其他对象。

mongodb mongodb-query rocket.chat
1个回答
0
投票

您将整个services(包括所有其他字段)传递给$set,因此,您正在重置嵌套在services中的所有字段。尝试使用dot notation.仅传递要更新/添加到文档的数据 $set documentation

要在嵌入文档或数组中指定字段,请使用点表示法。

db.users.update({"name":"Fabien Rousseau"},{ $set: { "services.cas" : { "external_id" : "fabien.rousseau", "version" : 2 }}})
© www.soinside.com 2019 - 2024. All rights reserved.