猫鼬如何使用位置运算符从特定条件的双嵌套数组中提取并返回新结果

时间:2018-12-04 12:00:09

标签: mongodb mongoose mongodb-query

假设我具有以下架构:

{
  _id: ObjectId(1),
  title: string,
  answers: [
    {
      _id: ObjectId(2),
      text: string,
      upVotes: [
        {
           _id: ObjectId(3),
           userId: ObjectId(4)
        }
      ]
    }   
  ]
}

我想要的是从特定用户的投票中投票,并返回新的更新结果。 例如,找到ID为1的问题,并获得ID为2的特定答案,然后从该答案中使用upId中的userId投票。 我想通过一个findOneAndUpdate查询来完成

2 个答案:

答案 0 :(得分:2)

您甚至可以通过$运算符使用单个$pull位置来更新嵌套数组

db.collection.findOneAndUpdate(
  { "_id": ObjectId(1), "answers._id": ObjectId(2) },
  { "$pull": { "answers.$.upVotes": { "userId": ObjectId(4) }}}
)

答案 1 :(得分:0)

我想我知道您想在特定数组中进行搜索

DataContext