Как правильно иметь отношение один-к-одному в MongoDB без каких-либо минусов?

Выполните следующие шаги:

  • Создайте эмулятор с API-интерфейсами google Intel x86
  • Создайте эмулятор, выполнив команду:
    adb root
    
  • Запустите следующую команду оболочки через adb:
    adb -e shell "su root; setprop persist.sys.locale pt-PT; stop; sleep 2; start” 
    
    , затем выйдите из оболочки, которая перезапускает эмулятор.
  • Локали нам нужны для скриншотов:
    de_DE
    en_EN
    fr_FR
    ko_KO
    pt_PT
    es_ES
    ja_JA
    
0
задан Saad Ismail 17 January 2019 в 10:48
поделиться

1 ответ

Самое простое решение - просто указать team_id в схеме платежей (которая у вас уже есть).

Вам не нужны ни user_id, ни payment_id в схеме команды, чтобы получать платежи с командой. Вы можете просто получить сводный запрос с поиском в таблице платежей, чтобы получить команду вместе с оплатой.

Итак, учитывая, что у вас есть ID команд и вам нужны данные о командах вместе с данными о платежах, вы можете написать запрос агрегирования, что-то вроде этого,

             Team.aggregate([
            {
                $match: { _id: { $in: list_of_user_ids } } // this will get the teams which match the array of ids
            },
            {
                $lookup: // this will search data from a different collection
                {
                    from: 'payments', // the collection to search from
                    localField: '_id', // the matching field in the team collection
                    foreignField: 'team', // matching field in the payment colection
                    as: 'payment' the name you want to give to the resulting payment object
                }
            }
           ])

Редактировать 1: Поиск, который я написал, делает именно то, что вам нужно. Просто я предположил, что у вас есть массив идентификаторов пользователей. Если у вас один идентификатор пользователя, просто измените операцию сопоставления на написанную вами

           $match: { user_id:  currently_loggedin_userId } 
0
ответ дан Visrozar 17 January 2019 в 10:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: