Mongodb 嵌套数组中的$addToSet

Mongodb 嵌套数组中的$addToSet,mongodb,Mongodb,我需要对嵌套数组执行$addToSet,下面是一个示例: { _id: 123, posts:[ { _id: 234, userid: 123 //its same id like the documents id, likesUser: [] } ] } 我的API需要2个参数: 文档的ID,以及我要添加的witch Post中的Post ID 喜欢该帖子的用户的ID 如果用户喜欢帖子,则其用户

我需要对嵌套数组执行
$addToSet
,下面是一个示例:

{
   _id: 123,
   posts:[
      {
         _id: 234,
         userid: 123 //its same id like the documents id,
         likesUser: []
      }
   ]
}
我的API需要2个参数:

  • 文档的ID,以及我要添加的witch Post中的Post ID

  • 喜欢该帖子的用户的ID

  • 如果用户喜欢帖子,则其用户ID应存储在
    likesUser

    假设用户喜欢帖子。文档id为
    123
    ,首先我要用该id搜索文档。然后我要用id
    234
    搜索帖子。现在我想将喜欢帖子的用户的ID存储在
    likesUser
    中,在这种情况下,用户的ID是
    5d345

    {
       _id: 123,
       posts:[
          {
             _id: 234,
             userid: 123 //its same id like the documents id,
             likesUser: ["5d345"]
          }
       ]
    }
    

    我怎样归档它?我已经用
    $elemMatch
    试过了,但它不起作用,它一个错误一个错误地抛出我。

    我发现了结果:

     let result = await Post.findOneAndUpdate(
        {
          _id: mongoose.Types.ObjectId(userId),
          "posts._id": mongoose.Types.ObjectId(postId)
        },
        {
          $addToSet: {
            "posts.$.likesUser": USER
          }
        }
      );
    

    我发现了结果:

     let result = await Post.findOneAndUpdate(
        {
          _id: mongoose.Types.ObjectId(userId),
          "posts._id": mongoose.Types.ObjectId(postId)
        },
        {
          $addToSet: {
            "posts.$.likesUser": USER
          }
        }
      );
    

    $arrayFilter应提供帮助,请参见:@Joe谢谢我将在mongodb游乐场查看并试用$arrayFilter应提供帮助,请参见:@Joe谢谢我将在mongodb游乐场查看并试用