Как подключиться к коллекциям по вложенным полям в MongoDB - PullRequest
0 голосов
/ 27 января 2019

Я борюсь с каким-то запросом в MongoDB. Допустим, у меня есть коллекция турнирной таблицы, которая выглядит как

{
   "competitions: {id: "1", name:"someLeague"},
   "standings": [
      {
         "type": "TOTAL",
         "table": [
            {
               "position": "1",
               "team": {
                  "id": "123",
                  "name": "XYZ"
               },  
               won: "1",
               draw: "2",
               lost: "3",
               points: "4",
            },
            {
               "position": "2",
               "team": {
                  "id": "321",
                  "name": "ABC"
               }
                      ...

И коллекция светильников, которая выглядит как

{
   matchDay: "YYYY-MM-DD",
   homeTeam: {id:  "123", name:"ABC"}, 
   awayTeam: {id:  "321", name:"XYZ"},
}

Можно ли связать эти две коллекции таким образом, чтобы поле "homeTeam" в коллекции приборов содержало всю информацию, включая очки, выигранные игры и т. Д. Из турнирной таблицы, в которой тип будет общим? И то же самое с полем awayTeam, с условием, что информация о команде будет из массива, где тип турнирной таблицы отсутствует.

1 Ответ

0 голосов
/ 12 февраля 2019

В MongoDB нет средств для ссылки на документ коллекции A в коллекции B, так что запросы find в коллекции B автоматически предоставляют атрибуты ссылочного документа.Однако, начиная с MongoDB 3.2, можно использовать команду $lookup как часть aggregation (см. https://stackoverflow.com/a/33511166/3976662) для JOIN (аналогично стандартному SQL) для нескольких коллекций во время запроса. В вашем случае выможно рассмотреть возможность использования $lookup в сочетании с $unwind - аналогично примеру в документации MongoDB . Spring Data Mongo поддерживает $lookup начиная с 1.10 .

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