我正在设置我的新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
请帮我调整命令以避免删除服务对象中的其他对象。
您将整个services
(包括所有其他字段)传递给$set
,因此,您正在重置嵌套在services
中的所有字段。尝试使用dot notation.仅传递要更新/添加到文档的数据
$set documentation说
要在嵌入文档或数组中指定字段,请使用点表示法。
db.users.update({"name":"Fabien Rousseau"},{ $set: { "services.cas" : { "external_id" : "fabien.rousseau", "version" : 2 }}})