我正在设置新的RocketChat服务器。
问题在于,实际上,如果不是由CAS创建的,Rocket Chat不支持CAS帐户。
我们有旧帐户。
我可以通过执行以下操作添加CAS功能:
在Windows上使用MongoDB Compass软件输入MongoDB数据库,然后使用键盘在服务对象中添加cas对象...
https://i.imgur.com/AIMAlA6.png
因此您可以看到我可以通过执行此操作添加CAS功能。
我想用代码做到这一点,所以我做到了:
1-输入rocketchat_mongo泊坞窗
2-以管理员登录身份连接并使用火箭聊天数据库
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
请帮助我调整命令,以避免删除服务对象中的其他对象。
答案 0 :(得分:0)
您要将整个services
(包括所有其他字段)传递到$set
,结果,您将重置嵌套在services
中的所有字段。尝试仅使用dot notation.将要更新/添加到文档的数据传递给文档
$set documentation说
要在嵌入式文档或数组中指定字段,请使用点符号。
db.users.update({"name":"Fabien Rousseau"},{ $set: { "services.cas" : { "external_id" : "fabien.rousseau", "version" : 2 }}})