Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Regex 如何使用mongo将子字符串数组与字符串数组匹配?_Regex_Mongodb_Mongodb Query - Fatal编程技术网

Regex 如何使用mongo将子字符串数组与字符串数组匹配?

Regex 如何使用mongo将子字符串数组与字符串数组匹配?,regex,mongodb,mongodb-query,Regex,Mongodb,Mongodb Query,我有以下收集结构- { "_id": ObjectId("54c784d71e14acf9ae833f9f"), "vms": [ { "name": "ABC", "ids": [ "abc.60a980004270457730244662385a4f69", "abc.60a980004270457730244662385a4f6d" ] }, {

我有以下收集结构-

{
    "_id": ObjectId("54c784d71e14acf9ae833f9f"),
    "vms": [
    {
        "name": "ABC",
        "ids": [
            "abc.60a980004270457730244662385a4f69",
            "abc.60a980004270457730244662385a4f6d"
        ]
    },
    {
        "name": "PQR",
        "ids": [
            "abc.6d867d9c7acd60001aed76eb2c70bd53",
            "abc.60a980004270457730244662385a4f6d"
        ]
    },
    {
        "name": "XYZ",
        "ids": [
            "abc.600605b00237d91016cdc38f376bd31d",
            "abc.600605b00237d91016cdc38f376cd32f"
        ]
    }
    ]
}
我有一个数组,其中包含
id
的子字符串。这里有一个数组供您参考-

myArray = [ "4270457730244662385a4f69","4270457730244662385a4f6d" , "4270457730244662385a4f6b"]
我想使用mongo查找myArray的每个元素在
ids
中不作为子字符串存在

目前,我可以在mongo中使用
regex
找到单个元素。 在上面的示例中,我希望输出为:

[
    {
    "name": "XYZ",
    "ids": [
        "abc.600605b00237d91016cdc38f376bd31d",
        "abc.600605b00237d91016cdc38f376cd32f"
    ]
    }
]

如何使用mongo在数组中查找子字符串???

可以使用regex进行查找。您可以使用运算符为多个子字符串匹配字符串。它在正则表达式中是
|
。在上搜索“布尔”或“”

使用聚合的MongoDB查询:

db.collection_name.aggregate([
    {$unwind: "$vms"},
    {$match: {
        "vms.ids": {$not: /.*(4270457730244662385a4f69|4270457730244662385a4f6d|4270457730244662385a4f6b).*/}}
    }
])
输出将是

{
    "_id" : ObjectId("54c784d71e14acf9ae833f9f"),
    "vms" : {
        "name" : "XYZ",
        "ids" : [
            "abc.600605b00237d91016cdc38f376bd31d",
            "abc.600605b00237d91016cdc38f376cd32f"
        ]
    }
}

“我希望输出为:…”,但在您的输出中不存在来自
myArray
的子字符串。准确地说,根据示例数据,输出预期结果是什么。@我错写了“现在”而不是“不现在”,请检查编辑的问题抱歉,我显然是这么愚蠢。但我有点吃惊,您查询的字符串“4270457730244662385a4f69”甚至与您自己想要的输出或当前答案给出的输出不匹配。不仅是一份文件,可能还有几份。对于为什么这个“字符串匹配”需要从“字符串中间”开始,而不是从一开始就开始,这似乎也是合理的。如果我聪明的话。也许问题会更清楚。@Neil-根据我的解释,yogesh只想从myArray中查找ID中不存在的名称。