【问题标题】:Fetched Matched Array data in MongoDB在 MongoDB 中获取匹配的数组数据
【发布时间】:2021-09-18 20:30:55
【问题描述】:

我有一个 MongoDB 对象,例如:

{
  "user" : ObjectId("60e5f88159292f575c0ca17f"),
  "questions" :[
     {
       question 'aaaaaaa',
       id :'1'
     },
     {  
       question 'bbbbbbb',
       id :'2'
     },
     {
       question 'ccccccc',
       id :'3'
     }
   ]
}

我想传递一组问题 id ['1', '3'] 和用户对象 id。我想获取与问题 ID 和用户匹配的问题。

我的预期输出应该是这样的:

{
  "user" : ObjectId("60e5f88159292f575c0ca17f"),
  "questions" :[
     {
       question 'aaaaaaa',
       id :'1'
     },
     {
       question 'ccccccc',
       id :'3'
     }
   ]
}

我该怎么做?

【问题讨论】:

    标签: mongodb mongoose aggregation-framework


    【解决方案1】:

    这是使用aggregate 实现此目的的一种方法。

    [
      {
        "$unwind": "$questions"
      },
      // filter out questions
      {
        $match: {
          "questions.id": {
            $in: [
              "1",
              "3"
            ]
          }
        }
      },
      // regroup to original structure
      {
        $group: {
          _id: "$_id",
          questions: {
            $push: "$questions"
          },
          user: {
            $first: "$user"
          }
        }
      }
    ]
    

    https://mongoplayground.net/p/LQmC6VG4s_S

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      相关资源
      最近更新 更多