我需要在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;。我不太确定该怎么做。请帮忙。
答案 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}
]
}}}
);