Как получить список вложенных массивов из mongo?

    {
    "_id" : "575",
    "_class" : "com.spyne.sharing.SpyneShareUserProject",
    "spyneSharePhotoList" : [ 
        {
            "_id" : "fxLO68XyMR",
            "spyneShareUsers" : [ 
                {
                    "_id" : "[email protected]",
                    "selectedByClient" : false
                }, 
                {
                    "_id" : "[email protected]",
                    "selectedByClient" : false
                }
            ]
        }, 
        {
            "_id" : "nVpD0KoQAI",
            "spyneShareUsers" : [ 
                {
                    "_id" : "[email protected]",
                    "selectedByClient" : true
                }
            ]
        }, 
        {
            "_id" : "Pm0B3Q9Igv",
            "spyneShareUsers" : [ 
                {
                    "_id" : "[email protected]",
                    "selectedByClient" : true
                }
            ]
        }
    ]
}

Из этого документа я хочу получить список spyneShareUsers.

Может ли кто-нибудь помочь мне с этим,

  • верхний идентификатор = 575
  • внутренний идентификатор = fxLO68XyMR

Мне нужен список объектов, содержащих идентификатор электронной почты и логическое значение.

Пожалуйста, помогите мне получить данные.


person Mr Freak    schedule 11.02.2020    source источник


Ответы (1)


Используя конвейер агрегации Mongo, вы можете собирать данные документа по своему усмотрению. Попробуй это:

db.collection.aggregate([
  {
    $unwind: {
      path: "$spyneSharePhotoList"
    }
  },
  {
    $match: {
      _id: "575",
      "spyneSharePhotoList._id": "fxLO68XyMR"
    }
  },
  {
    $project: {
      _id: 1,
      spyneShareUsers: "$spyneSharePhotoList.spyneShareUsers"
    }
  }
])
person Mayuri S Kulkarni    schedule 11.02.2020
comment
Я получаю ** Получено 0 записей за 0 мс ** - person Mr Freak; 11.02.2020
comment
Вы заменили здесь название своей коллекции: db.collection.aggregate () - person Mayuri S Kulkarni; 11.02.2020
comment
хорошо, спасибо, я сделал ошибку, о которой вы упомянули. не могли бы вы изучить эту проблему stackoverflow.com/questions/60182047/ - person Mr Freak; 12.02.2020