Мы новичок в Mongodb, в рамках нашего POC мы загрузили кучу документов в Mongo и протестировали различные варианты запросов и проекций для извлечения данных. Один из вариантов использования, мы пытаемся отфильтровать приведенный ниже образец документа в Mongo и получить только вложенный документ. Точно так же, как мы получаем данные в реляционной базе данных.
Пример ввода.
{
"_id": "59036b0fa036cc28c8e07db6",
"sections": [{
"srcName": "test1",
"CompanyName": "ABC",
"sectorCode": "P",
"raw": false,
"data": [{
"srcKey": "",
"rowIdx": 0
},
{
"srcKey": "01",
"rowIdx": 1
}
]
}]
}
**desired output**
{
"_id" : ObjectId("59036b0fa036cc28c8e07db6"),
"sections" : [
{
"srcName" : "test1",
"CompanyName" : "ABC",
"sectorCode" : "P",
"raw" : false,
"data" : [
{
"srcKey" : "01",
"rowIdx" : 1
}
]
}
]
}
Команда оболочки, которую я использовал в RoboMongo, такова:
1/db.getCollection('InsStatData').aggregate([
{"$project": {
"sections": {
"$filter": {
"input": "$sections", "as": "data", "cond": { "setIsSubset": [["$$data.rowIdx"], [1]] }}}}}])
2/ db.getCollection('InsStatData').aggregate({$match: {"sections.data.rowIdx": 1} })
Подскажите, пожалуйста, как добиться желаемого результата.