Как получить список вложенных массивов из mon go? - PullRequest
0 голосов
/ 11 февраля 2020
    {
    "_id" : "575",
    "_class" : "com.spyne.sharing.SpyneShareUserProject",
    "spyneSharePhotoList" : [ 
        {
            "_id" : "fxLO68XyMR",
            "spyneShareUsers" : [ 
                {
                    "_id" : "chittaranjan@eventila.com",
                    "selectedByClient" : false
                }, 
                {
                    "_id" : "chittaranjan@gmail.com",
                    "selectedByClient" : false
                }
            ]
        }, 
        {
            "_id" : "nVpD0KoQAI",
            "spyneShareUsers" : [ 
                {
                    "_id" : "chittaranjan@eventila.com",
                    "selectedByClient" : true
                }
            ]
        }, 
        {
            "_id" : "Pm0B3Q9Igv",
            "spyneShareUsers" : [ 
                {
                    "_id" : "chittaranjan@gmail.com",
                    "selectedByClient" : true
                }
            ]
        }
    ]
}

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

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

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

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

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

1 Ответ

1 голос
/ 11 февраля 2020

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

db.collection.aggregate([
  {
    $unwind: {
      path: "$spyneSharePhotoList"
    }
  },
  {
    $match: {
      _id: "575",
      "spyneSharePhotoList._id": "fxLO68XyMR"
    }
  },
  {
    $project: {
      _id: 1,
      spyneShareUsers: "$spyneSharePhotoList.spyneShareUsers"
    }
  }
])
...