как преобразовать данные в запросе mongodb

#mongodb #aggregation-framework

#mongodb #структура агрегации

Вопрос:

 db={
  setting: [
    {
      "_id": "5fce2865cf6b771054133981",
      "files": [
        {
          "_id": "5fc09a5c1027307146d5ede5",
          "imageUrl": "xyz.jpg",
          "width": 375,
          "height": 500,
          "videoUrl": "video.mp4"
        }
      ]
    },
    {
      "_id": "5fcdcc60da26c80a6de06759",
      "files": [
        {
          "_id": "5fc09a5c1027307146d5ede5",
          "imageUrl": "xyz.jpg",
          "width": 375,
          "height": 500             
        }
      ]
    },
    {
      "_id": "5fcdcc52da26c80a6de06758",
      "files": []
    }
  ]
}

db.setting.aggregate([
  {
    "$project": {
      _id: 1,
      files: 1
    }
  }
])
 

https://mongoplayground.net/p/KBOCksJ5xzu

интересно, как получить данные, если существует массив ImageUrl и videoURL.

Мне нужны отдельные данные, если я запрашиваю ImageUrl, он должен возвращать только те записи, в которых есть imageurl с некоторыми данными, если я запрашиваю videoURL, он должен возвращать, что записи состоят из videoURL

как этого добиться, пожалуйста, укажите

Спасибо

Комментарии:

1. неясный вопрос, вы хотите что-то вроде этой игровой площадки ?

2. @turivishal Спасибо за подсказку, это не происходит в моем сознании, спасибо

3. Не могли бы вы включить ожидаемый результат? db.setting.find([ { "files.videoUrl": { $exists: true } } ]) это и его эквивалент ImageUrl будут возвращать только те, которые содержат поле в подобъектах files.