Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongodb中如何基于输入数组过滤数据?_Javascript_Arrays_Mongodb_Filter - Fatal编程技术网

Javascript mongodb中如何基于输入数组过滤数据?

Javascript mongodb中如何基于输入数组过滤数据?,javascript,arrays,mongodb,filter,Javascript,Arrays,Mongodb,Filter,我从前端接收到这样的输入 { "options":[ { "optionId":"5ebbe0f56b197f36fc472168" }, { "optionId":"5ebbe1aa6b197f36fc47216e" } ] } 我想以这样的方式过滤数据:当我过滤数据时,我应该接收一个包含这两个id的对象数组 我有我需要找到这个的结构 "answersArray" : [ { "

我从前端接收到这样的输入

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

我想以这样的方式过滤数据:当我过滤数据时,我应该接收一个包含这两个id的对象数组

我有我需要找到这个的结构

"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")
    },
]

我期待着这个答案

 "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")
    }
],
我如何筛选这些建议?

您想使用

你想用


使用
$in
运算符:
.find({u id:{$in:[“5ebbe0f56b197f36fc472168”,“5ebbe1aa6b197f36fc47216e”]})
感谢您的回复,但我在使用$in时稍微改变了我的问题,它返回两个文档,因为第二个文档也有来自输入数组的id,但我希望它只返回一个文档,第一个文档包含两个id,使用
$in
运算符:
。查找({u id:{$in:[“5ebbe0f56b197f36fc472168”,“5ebbe1aa6b197f36fc47216e”]})感谢您的回复,但我在使用$in时稍微改变了我的问题,它返回了两个文档,因为第二个文档也有输入数组中的id,但我希望它只返回一个文档,第一个文档包含两个id
db.collection.findOne(
    {
        "answersArray.questionId": {$all: options.map(id => ObjectId(id))}
    }
);