У меня есть коллекция, содержащая документы.Каждый документ имеет атрибут part
, содержащий массив хеша (документы).Эти документы могут иметь или не иметь атрибут _encwas
.
{
_id : "00001",
parts : [
{ _encwas: 1, body: "" },
{ body: "" }
]
},
{
_id : "00002",
parts : [
{ _encwas: 1, body: "" },
{ _encwas: 2, body: "" }
]
},
{
_id : "00003",
parts : [
{ body: "" },
{ body: "" }
]
}
Существует ли быстрый способ найти все записи, в которых хотя бы одна часть содержит атрибут _encwas
?
следующий запрос работает
db.collection.find({ "parts.0._encwas" : { $exists : true } });
, но я бы хотел найти способ заменить 0
на any part
.Например,
db.collection.find({ "parts.*._encwas" : { $exists : true } });
Запрос должен быть настолько эффективным, насколько это возможно (я не против, если мне нужно создать дополнительные индексы), потому что мне нужно перебрать более 1 млн записей.