如何在mongodb中搜索字段的特定动态模式?

时间:2019-05-30 10:58:39

标签: python-3.x mongodb

我需要在mongodb集合中搜索特定的模式字段。我尝试使用{$ exists:true};但是,只有在您提供准确字段的情况下,才能给出结果。

我尝试将{$ exists:true}用于我的字段。但是,如果您提供一些模式,则不会产生结果。

{
"field1":"value1",
"field2":"value2",
"field3":object
{/arjun1/pat1: 1,
/arjun2/pat2: 3,
/arjun3/pat3: 5
}
"field4":"value4",
}

从某个字段中,我得到了键pat3和field3。由此,我需要找出文档中是否存在/ arjun3 / pat3值。 如果我使用{“ field3./arjun3/pat3":{$exists:true}},则会得到结果。但是问题是我只能得到field3和pat3,我需要使用一些模式匹配,例如field3。*。pat3,然后使用$ expr或$ exists;。我不太确定该怎么做。请帮忙。

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式(re模块)进行类似于模式匹配的SQL,也可以编译自己的自定义通配符。但是,如果您不希望这样做,则可以简单地使用fnmatch模块,它是python的内置库,该库允许对多个字符(通过*)或单个字符(通过{ {1}}。

?

输出:-

import fnmatch

a = "hello"
print(fnmatch.fnmatch(a, "h*"))

答案 1 :(得分:0)

您可以尝试这种方式

db.arjun.find(
    {"field3" : {
        "$elemMatch" : { $and: [
            {"arjun3.pat3" : {$exists:true}},
            {"arjun3.pat3" : 5}
        ]
        }}}
);