Доступ к значениям вложенных объектов из MongoDB - PullRequest
0 голосов
/ 20 июня 2019

У меня есть коллекция в MongoDB вложенных объектов (в основном, в виде древовидной структуры).Я пытаюсь получить доступ к определенным значениям "id" и "user_id" в "children".

Коллекция выглядит следующим образом: Изображение объекта дерева в MongoDB

Когда я запрашиваю «children», я получаю, например, следующее:

[{'children': [{'children': [{'children': [{'id': 737992252891537408, 'user_id': 3240396143}], 'id': 737991958161940480, 'user_id': 3240396143}], 'id': 737986305481682944, 'user_id': 56377143}], 'id': 737979183599652864, 'user_id': 3240396143}], 'id': 737978059291234304, 'user_id': 3240396143}]}

Как мне эффективно получить доступ ко всем «id» с «user_id» = 56377143?Кажется, я не могу получить их все, когда он вложен слишком глубоко.

Я пытался использовать цикл for, как это, но он не выводит все идентификаторы, которые соответствуют user_id

val= "children"
lst_rt= []
lst_ids = []
def get_value(mydict, keys):

    if type(mydict) == dict:
        print(mydict[0]['user_id'], mydict[0]['id'], "TEST")
        return get_value(mydict[keys], val)
    if type(mydict) == list and keys in mydict[0] and mydict[0]['user_id'] == 56377143 :
        print(mydict[0]['id'],mydict[0]['user_id'],  'COND')
        return get_value(mydict[0][keys], val)
    elif mydict[0]['user_id'] == 56377143 and mydict[0]['id'] != None:
        print(mydict[0]['id'], mydict[0]['user_id'])
        lst_rt.append(int(mydict[0]['id']))
        return mydict[0]['id']



for x in root_tweets:

    print(get_value(x['children'], val))
...