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,
     },
  },
}...