Мне нужно найти коллекцию mongodb для определенного поля шаблона. Я попытался с помощью {$ exist: true}; Однако это дает результаты только в том случае, если вы укажете точное поле.

Я попытался использовать {$ exist: 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": enj$exists:true}}, это даст мне результаты. Но проблема в том, что я получаю только field3 и pat3, и мне нужно использовать сопоставление с каким-либо шаблоном, например field3. *. Pat3, а затем использовать $ expr или $ существующие; что я не совсем уверен, как. Пожалуйста помоги.

0
Arjun 30 Май 2019 в 13:58

2 ответа

Лучший ответ

Вы могли бы попробовать что-то в этом роде

db.arjun.find(
    {"field3" : {
        "$elemMatch" : { $and: [
            {"arjun3.pat3" : {$exists:true}},
            {"arjun3.pat3" : 5}
        ]
        }}}
);
1
Priyanka Kariya 31 Май 2019 в 05:09

Вы можете либо воспользоваться регулярным выражением (re модуль) для SQL, подобного сопоставлению с образцом, и скомпилировать свой собственный шаблон. Но если вы не хотите этого, вы можете просто использовать модуль fnmatch, это встроенная библиотека python, которая позволяет сопоставлять символы подстановки для нескольких символов (через *) или одного символа (через ? ) .

import fnmatch

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

< Сильный > ВЫВОД : -

True
1
Vasu Deo.S 30 Май 2019 в 11:10
56376941