Node.js 如何将特定数组添加到数据库中的现有文档中?
因此,基本上我正在尝试为我的Node.js 如何将特定数组添加到数据库中的现有文档中?,node.js,mongoose,discord.js,Node.js,Mongoose,Discord.js,因此,基本上我正在尝试为我的Discord Bot创建一个命令,用于向链接到角色的特定消息添加反应,当用户使用指定表情符号作出反应时,应该收到反应 语法可能有助于更好地理解它: !addRoleByReaction <messageID> <emoji you want to add as reaction> <role the user should receive> !addRoleByReaction 例子: !AddRoleByResaction
Discord Bot
创建一个命令,用于向链接到角色的特定消息添加反应
,当用户使用指定表情符号作出反应时,应该收到反应
语法可能有助于更好地理解它:
!addRoleByReaction <messageID> <emoji you want to add as reaction> <role the user should receive>
!addRoleByReaction
例子:
!AddRoleByResaction 123456789您可以使用运算符和$push
将角色添加到目标消息中:
注:
如果在$elemMatch
表达式中指定单个查询谓词,并且未在$elemMatch
中使用$not
或$ne
运算符,则可以省略$elemMatch
为了解决我的问题并避免进一步的复杂化,我现在只需调整模式
:
/\u id反映消息的id
_id:reqString,
反应角色:[{
_id:错,
反应:reqString,
角色:reqString,
}]
如您所见,我删除了guild.id
和消息
数组
现在,将为每条消息创建一个新的文档
,其中仅包含包含所有反应的数组
和相关的角色
由于消息ID
是唯一的,而且公会也可以通过它来识别,因此这种结构不应该产生任何问题,也使程序更容易找到文档,因为我现在只需搜索消息ID
听起来不错,我一回到家就会测试这个,不过已经谢谢你了!那么我的消息
数组中的msgId
字段呢?因为您的回答中没有包含该字段。请参考您的代码,msgId
字段没有更改,因此您不需要将其放入更新中。如果我从未将该字段添加到数据库中,我该如何查找基于guild.id
和msgId
的文档?那么这个领域就不存在了,或者我误解了什么?哦,对不起。我忘记了这个guild
&这个messageID
的条目不存在的部分。在这种情况下,一个查询可能不够。
!addRoleByReaction 123456789 You can use $ operator with $push
to add role to the target message:
await messageReactionSchema.findOneAndUpdate({
_id: guild.id,
message: { msgId: targetMessage }
}, {
$push: {
"message.$.reactionRole": {
reaction: targetReaction,
role,
},
},
}...