Поиск между полями объекта массива в разных коллекциях и получение одного элемента - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь получить один объект из поиска между объектами массива в другой коллекции.

Коллекция предметов:

{  
   "_id":"5cd97a35e24f1a253e444605",
   "createdOn":"2019-05-13T14:07:10.971Z",
   "itemType":"text value",
   "fields":[  
      {  
         "_id":"5cd97a35e24f1a253e444606",
         "fieldConfigRef":"5cd97cbb566d432ac3ebb748",
         "value":"text value"
      }
   ],
   "__v":0
}

Коллекция элементов конфигурации:

{  
   "_id":"5cd97cbb566d432ac3ebb747",
   "itemType":"Bolletta",
   "fields":[  
      {  
         "_id":"5cd97cbb566d432ac3ebb749",
         "name":"importo",
         "label":"Importo",
         "fieldType":"number",
         "fulltext":true
      },
      {  
         "_id":"5cd97cbb566d432ac3ebb748",
         "name":"emitettente",
         "label":"Emittente",
         "fieldType":"string",
         "fulltext":true
      }
   ],
   "__v":0
}

Я могу присоединиться к ним с помощью свойства _id и fieldConfigRef вложенного массива:

db.items.aggregate([
  {
    $match: {
      _id: ObjectId("5cd97a35e24f1a253e444605")
    }
  },
  {
    $lookup: {
      from: "itemconfigurations",
      localField: "fields.fieldConfigRef",
      foreignField: "fields._id",
      as: "itemconfig"
    }
  }
])

Выход:

{
    "_id": "5cd97a35e24f1a253e444605"
    "createdOn": "2019-05-13T14:07:10.971Z"
    "itemType": "Bolletta"
    "fields": [
        {
            "_id": "5cd97a35e24f1a253e444606"
            "fieldConfigRef": "5cd97cbb566d432ac3ebb748"
            "value": "Eni Gas e Luce"
        }
    ]
    "__v": 0 
    "itemconfig": [
        {
            "_id": "5cd97cbb566d432ac3ebb747"
            "itemType": "Bolletta"
            "fields": [
                {
                    "_id": "5cd97cbb566d432ac3ebb749"
                    "name": "importo"
                    "label": "Importo"
                    "fieldType": "number"
                    "fulltext": true
                }
                {
                    "_id": "5cd97cbb566d432ac3ebb748"
                    "name": "emitettente"
                    "label": "Emittente"
                    "fieldType": "string"
                    "fulltext": true
                }
            ]
            "__v": 0
        }
    ]
}

Как получить один массив объединенных объектов между элементами объекта вложенных массивов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...