Я новичок в mongodb, и я все еще пытаюсь осмыслить запросы, так что простите меня, если мой вопрос слишком прост или я получил ответ в другом месте.
У меня есть коллекция, подобная приведенной ниже
[
{"_id":1,
"data" :[{"a":1,"b":2},{"a":1,"b":3},{"a":2,"b":3},{"a":4,"b":1}]
},
{"_id":2,
"data" :[{"a":3,"b":2},{"a":2,"b":4},{"a":5,"b":3},{"a":7,"b":1}]
}
]
Как мне написать запрос, который просматривает массив данных первого документа и возвращает все элементы, где «a» равно единице.
Примерно так вывод:
[{"a":1,"b":2},{"a":1,"b":3}]
Это моя текущая попытка
db.myCollection.find({_id:1},{data: {$elemMatch: {a : 1}}})
Но это дает мне
{"_id": 1, "data":
[{"a":1,"b":2},{"a":1,"b":3}]
}
Мне не нужно ничего, кроме результатов в «данных».
Может ли кто-нибудь помочь мне?
Я также был бы признателен за любые указатели для просеивания массива в документе для элементов, соответствующих более общим условиям в одном документе ( ie для приведенного выше примера поиск документов, в которых a + b <5, a> b, a> 1 и b> 2, a> 3 или b <1, et c.) </p>
Edit : Я использую mongodb версии 4.2.6