首页 > 解决方案 > 如何使用mongodb查询返回数组中不可用的给定输入值

问题描述

我有一个输入数组,EX: let UPID = ["0","1","10"]。我必须检查members.regularStudent给定的输入值是否可用?假设不可用意味着我必须推送一个数组并返回结果

我的文件:

{
    "_id" : "5bb20d7556db6915846da67f",
    "members" : {
        "regularStudent" : [
            "3",
            "4"
        ]
    }
},

{
    "_id" : "5bb20d7556db6915846da55f",
    "members" : {
        "regularStudent" : [
            "1",
            "2"
        ]
    }
}

我的预期输出

    [
        "0",
        "10"
    ]

我的代码:

    let UPID = ["0","1","10"]
db.Groups.find(
    /*{
    "members.regularStudent": { $nin: UPIDs }
    }*/
)
.forEach(function(objects){
    print(objects)
})

我已经更新了mycode,请在我的问题部分查看顶部,这print(objects)意味着我有我的对象,基于这个变量你能更新你的答案吗?

** 打印(对象) **

{
    "_id" : "5bb20d7556db6915846da67f",
    "members" : {
        "regularStudent" : [
            "3",
            "4"
        ]
    }
},

{
    "_id" : "5bb20d7556db6915846da55f",
    "members" : {
        "regularStudent" : [
            "1",
            "2"
        ]
    }
}

标签: javascriptmongodbmongodb-query

解决方案


您可以将map方法.filter

let UPID = ["0","1","10"]; 
let docs = [{ "_id" : "5bb20d7556db6915846da67f", "members" : { "regularStudent" : [ "3", "4" ] } },
{ "_id" : "5bb20d7556db6915846da55f", "members" : { "regularStudent" : [ "1", "2" ] } }]

let ids = [].concat(...docs.map(elem => elem.members.regularStudent));
console.log(UPID.filter(id => !ids.includes(id)));


推荐阅读