简体   繁体   English

如何根据 mongodb 中的输入数组过滤数据?

[英]How to filter data based on input array in mongodb?

I am receiving an Input from front-end like this我从前端收到这样的输入

{
"options":[
      {
          "optionId":"5ebbe0f56b197f36fc472168"
      },
      {
           "optionId":"5ebbe1aa6b197f36fc47216e"
      }
]

} }

I want to filter data in a way such that when I filter data I should receive an array of object which contains both these two id's我想以某种方式过滤数据,这样当我过滤数据时,我应该收到一个包含这两个 id 的 object 数组

I have structure from where I need to find this我有结构,我需要找到这个

"answersArray" : [
    {
        "_id" : ObjectId("5ede62f6a6979e5128bb89ba"),
        "questionId" : ObjectId("5ebbe00e6b197f36fc472161"),
        "answerId" : ObjectId("5ebbe00e6b197f36fc472162")
    },
    {
        "_id" : ObjectId("5ede62f6a6979e5128bb89b9"),
        "questionId" : ObjectId("5ebbe0f56b197f36fc472168"),
        "answerId" : ObjectId("5ebbe0f56b197f36fc472169")
    },
    {
        "_id" : ObjectId("5ede62f6a6979e5128bb89b8"),
        "questionId" : ObjectId("5ebbe1aa6b197f36fc47216e"),
        "answerId" : ObjectId("5ebbe1aa6b197f36fc47216f")
    }
],

"answersArray" : [
    {
        "_id" : ObjectId("5ede620ea6979e5128bb89b5"),
        "questionId" : ObjectId("5ebbd4e76b197f36fc47211e"),
        "answerId" : ObjectId("5ebbd4e76b197f36fc47211f")
    },
    {
        "_id" : ObjectId("5ede620ea6979e5128bb89b4"),
        "questionId" : ObjectId("5ebbd5516b197f36fc472120"),
        "answerId" : ObjectId("5ebbd5516b197f36fc472121")
    },
    {
        "_id" : ObjectId("5ede62f6a6979e5128bb89b8"),
        "questionId" : ObjectId("5ebbe1aa6b197f36fc47216e"),
        "answerId" : ObjectId("5ebbe1aa6b197f36fc47216f")
    },

] ]

I am expecting this answer我期待这个答案

 "answersArray" : [
    {
        "_id" : ObjectId("5ede62f6a6979e5128bb89ba"),
        "questionId" : ObjectId("5ebbe00e6b197f36fc472161"),
        "answerId" : ObjectId("5ebbe00e6b197f36fc472162")
    },
    {
        "_id" : ObjectId("5ede62f6a6979e5128bb89b9"),
        "questionId" : ObjectId("5ebbe0f56b197f36fc472168"),
        "answerId" : ObjectId("5ebbe0f56b197f36fc472169")
    },
    {
        "_id" : ObjectId("5ede62f6a6979e5128bb89b8"),
        "questionId" : ObjectId("5ebbe1aa6b197f36fc47216e"),
        "answerId" : ObjectId("5ebbe1aa6b197f36fc47216f")
    }
],

How can I filter this any suggestions?我怎样才能过滤这个任何建议?

You want to use $all .你想使用$all

db.collection.findOne(
    {
        "answersArray.questionId": {$all: options.map(id => ObjectId(id))}
    }
);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM