Мне нужно найти коллекцию 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; что я не совсем уверен, как это сделать. Пожалуйста помоги.
Привет, Приянка, из набора документов, подобных упомянутому выше, мне нужно создать запрос, который выведет мне документы с именем поля pat3. Но я не знаю, будет ли это /arjun3/pat3 или /arjun2/pat3. Все, что я знаю, это то, что у меня есть pat3, и мне нужно будет получить документы, которые имеют такие значения, как /arjun1/pat3 , /arjun3/pat3 и т. д., а не /arjun3/pat2.
Привет, Арджун, я просто думаю вслух, ты пробовал использовать elematch в этом случае?
Нет Приянки. Я никогда не слышал об этом. Может быть, мое невежество.
Вы можете использовать регулярное выражение (модуль re
) для SQL, например сопоставление с образцом, и скомпилировать свой собственный подстановочный знак. Но если вы этого не хотите, вы можете просто использовать модуль fnmatch
, это встроенная библиотека Python, которая позволяет сопоставлять подстановочные знаки для нескольких символов (через *
) или одного символа (через ?
).
import fnmatch
a = "hello"
print(fnmatch.fnmatch(a, "h*"))
ВЫХОД:-
True
можно попробовать что-то в этом роде
db.arjun.find(
{"field3" : {
"$elemMatch" : { $and: [
{"arjun3.pat3" : {$exists:true}},
{"arjun3.pat3" : 5}
]
}}}
);
Привет, Арджун, вы можете использовать запрос агрегации вместе с опцией раскрутки, сопоставить запрос и получить соответствующий результат. Также будет полезно, если вы укажете точные запросы, которые хотите выполнить.