С коллекцией с документами, как показано ниже, мне нужно найти документы, в которых определенное поле - например. lev3_field2
(в документе ниже).
Я попробовал следующее, но это не возвращает никаких результатов, хотя поле lev3_field2
присутствует в некоторых документах.
db.getCollection('some_collection').find({"lev3_field2": { $exists: true, $ne: null } })
{
"_id" : ObjectId("5884de15bebf420cf8bb2857"),
"lev1_field1" : "139521721",
"lev1_field2" : "276183",
"lev1_field3" : {
"lev2_field1" : "4",
"lev2_field2" : {
"lev3_field1" : "1",
"lev3_field2" : {
"lev4_field1" : "1",
"lev4_field2" : "1"
},
"lev3_field3" : "5"
},
"lev2_field3" : {
"lev3_field3" : "0",
"lev3_field4" : "0"
}
}
}
update1: это пример, однако в реальном документе неизвестно, какие родительские поля предназначены для поиска. Поэтому вместо lev3_field2
я бы искал `levM_fieldN '.
update2: скорость не является для меня основной проблемой, я могу работать с относительно более медленными параметрами, поскольку основная функция заключается в поиске документов с обсуждаемыми критериями и после того, как документ и схема понятна, запрос может быть переписан для производительности, включив родительские ключи.