Как я могу запросить массив встроенного документа в mongodb.
{
_id: 1,
zipcode: "63109",
students: [
{ name: "john", school: 102, age: 14 },
{ name: "jess", school: 102, age: 11 },
{ name: "jeff", school: 108, age: 15 }
]
}
{
_id: 2,
zipcode: "63110",
students: [
{ name: "ajax", school: 100, age: 7 },
{ name: "achilles", school: 100, age: 8 },
]
}
{
_id: 3,
zipcode: "63109"
}
Допустим, для приведенных выше данных, как будут извлекаться только те строки, где age> = 7 и age <= 10.Для id_1 должна быть возвращена только строка с возрастом 10 лет.Обе строки в id_2 и id_3.Кроме того, id_4 не имеет поля с именем студентов.Итак, я НЕ хочу видеть это в выводе.</p>
Редактировать: - Вывод, который я получаю, выглядит примерно так, когда я делаю фильтр.Но я НЕ хочу строки, в которой есть "None".В последнем документе _id: 3 отсутствуют учащиеся на местах, но для учащихся выполняется фильтрация, поэтому для выходных данных указано «Нет».
Я хочу обработать 2 случая:
- Фильтрация не должна применяться, если массив «ученики» не существует под идентификатором.
- Массив учеников существуетно пусто []
Оба этих случая заканчиваются на выходе, если их просто фильтровать.
{'_id': ObjectId('5cdaefd393436906b016ddb4'),
'students': [{'name': ajax,
'school': '100',
'age': '7'},
{'name': achilles,
'school': '100',
'age': '8'}],
{'_id': ObjectId('5cdaefd393436906b016ddb3'), 'students': None}
Примечание: я использую другой, но идентичный набор данных, поэтому выводне точно, но я надеюсь, вы поняли идею.«Студент» - это встроенный документ, который может присутствовать или не присутствовать во всех документах.
Редактировать: Наконец-то я использовал раскрутку, чтобы добиться того, чего хотел.