MongoDB иерархический поиск данных - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу получить иерархические данные пользовательской партнерской сети, не только _ids, но и целые пользовательские данные для всех партнеров. Я попробовал нативный Mongodb $ graphlookup , это было решение, но оно сохраняет данные json только до 2-го уровня и сглаживает данные после этого.

Users collection

_id (objectid)
username
firstName
lastName
partner
    _id (this is the user collection _id)

Пользователь может и не может содержать партнера.

Есть ли способ достичь того, к чему я стремлюсь, в нативном стиле javascript, чтобы я мог создать его как функцию внутри Mongodb. Функция примет пользовательский объект из приложения, а затем загрузит партнерскую сеть пользователя со всеми сведениями о коллекции пользователей:

    | (root user)
     \ 
 |     |     | (level 1)
 \      \      \ 
| | |   | |     | (level 2)
\           \     \ 
|||        | |     |   | (level 3)
           \  \     \  
          |||  |||   || (level 4)  
                         (to infinite level)

Пример вывода

"_id":  ""5b95af0a9c13cd3db119331c",
"username": "fredymercury211",
"firstname": "Fredy",
"lastname": "Mercury",
"partners": [
    {
        "_id": "5b95af0a9c13cd3db1193324",
        "username": "joesatriani787",
        "firstname": "Price",
        "lastname": "Friesen",
        "partners": [
            {
                "_id": "5b95af0a9c13cd3db11933ae",
                "username": "johnpetrucci412",
                "firstname": "Ian",
                "lastname": "Homenick",
                "partners": [
                        {
                            "_id": "5b95af0a9c13cd3db1193324",
                            "username": "stevevai877",
                            "firstname": "Nicole",
                            "lastname": "Beer",
                            "partners": []
                        }   
                            ]
            }
                    ],
        "_id": "5b95af0a9c13cd3db1193397",
        "username": "robertplant988",
        "firstname": "Brandi",
        "lastname": "Douglas",
        "partners": [
            {   
                "_id": "5b95af0a9c13cd3db119333b",
                "username": "yngwiemalmsteen355",
                "firstname": "Benedict",
                "lastname": "Langworth",
                "partners": []
            }
                    ]
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...