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中不存在的名称。