gpt4 book ai didi

mongodb - 如何连接 MongoDB $set 中的字符串

转载 作者:可可西里 更新时间:2023-11-01 10:03:11 29 4
gpt4 key购买 nike

我有一个相当复杂的 MongoDB 运算符,它使用 where 来查看多个用户以查看他们是否具有特定值,如果有,它会更改该值。我的问题是它检查的值在不同情况下可能不同,所以我的 $set 会要求我将字符串加在一起以获得我要更改的属性。这就是我的意思:

users.update({$where:function() {
return this.profile.chatInfo.subscribedRooms.hasOwnProperty(findChatroom._id);
}},{$set: {"profile.chatInfo.subscribedRooms."+findChatroom._id:false}},{multi:true}
)

唯一在该代码中不起作用的是 $set 中我添加“profile.chatInfo.subscribedRooms.”的部分。+findChatroom._id

我尝试过的另一件事是制作一个等于添加的字符串的变量,并使用该变量,但它也没有用。

var addedString = "profile.chatInfo.subscribedRooms."+findChatroom._id;
users.update({$where:function() {
return this.profile.chatInfo.subscribedRooms.hasOwnProperty(findChatroom._id);
}},{$set: {addedString:false}},{multi:true}
)

我实际上想在这里做的是,无论何时发送聊天消息,都会运行此运算符。它查找每个订阅房间的用户,并将值设置为 false。值为 true 或 false 仅指用户是否已阅读聊天。这将用于通知。

编辑:我的问题不是 this 的重复问题因为 MongoDB set 命令的工作方式不同于简单地更改对象属性的值。除此之外,MongoDB 甚至不能使用对象 [属性] 的表示法,因为文档说访问嵌入式字段的唯一方法是通过点表示法。

最佳答案

实际上,@BlakesSeven 提供的那些链接可以解决您的问题。应该是这样的,

var addedString = "profile.chatInfo.subscribedRooms."+findChatroom._id;
var $set = {};
$set[addedString] = false;

users.update({$where:function() {
return this.profile.chatInfo.subscribedRooms.hasOwnProperty(findChatroom._id);
}}, { $set: $set }, { multi:true })

关于mongodb - 如何连接 MongoDB $set 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36191917/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com