如何在不删除前一个对象的情况下插入新对象
How to insert new object without deleting previous one
我正在设置我的新 RocketChat 服务器。
问题是,实际上Rocket Chat不支持非CAS创建的CAS账号。
我们有旧帐户。
我可以通过这样做来添加 CAS 功能:
在Windows上用MongoDBCompass软件进入MongoDB数据库,用我的键盘在服务对象中添加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
请帮助我调整我的命令以避免删除我的服务对象中的其他对象。
您正在将整个 services
(包括所有其他字段)传递给 $set
,因此,您正在重置嵌套在 services
中的所有字段。尝试使用 dot notation.
仅将您想要 update/add 的数据传递到您的文档
$set documentation 说
To specify an field in an embedded document or in an array, use dot notation.
db.users.update({"name":"Fabien Rousseau"},{ $set: { "services.cas" : { "external_id" : "fabien.rousseau", "version" : 2 }}})
我正在设置我的新 RocketChat 服务器。
问题是,实际上Rocket Chat不支持非CAS创建的CAS账号。
我们有旧帐户。
我可以通过这样做来添加 CAS 功能:
在Windows上用MongoDBCompass软件进入MongoDB数据库,用我的键盘在服务对象中添加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
请帮助我调整我的命令以避免删除我的服务对象中的其他对象。
您正在将整个 services
(包括所有其他字段)传递给 $set
,因此,您正在重置嵌套在 services
中的所有字段。尝试使用 dot notation.
仅将您想要 update/add 的数据传递到您的文档
$set documentation 说
To specify an field in an embedded document or in an array, use dot notation.
db.users.update({"name":"Fabien Rousseau"},{ $set: { "services.cas" : { "external_id" : "fabien.rousseau", "version" : 2 }}})