Невозможно правильно перебрать значения MongoDB, используя python - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь выполнить итерацию следующего mongoDB (json), но он не проходит его полностью, а только обход ограниченных запросов.

{
"_id" : ObjectId("5b7fb2a745d12b1e8bb20d84"),
"date_time" : "24, Aug 2018 12:52",
"original_query" : "harsh.shah.4949",
"posts" : [ 
    {
        "full_story" : "https://m.facebook.com//story.php?story_fbid=1875197722542135&id=100001557751449&refid=17",
        "love" : {
            "total" : "7",
            "reactors" : [ 
                {
                    "profile" : "https://m.facebook.com//AMITTIWARIITGN",
                    "name" : "Amit T",
                    "fb_id" : "100025139550829"
                },  
            ]
        },
       "like" : {
            "total" : "93",
            "reactors" : [ 
                {
                    "profile" : "https://m.facebook.com//AMITTIWARIITGN",
                    "name" : "Amit T",
                    "fb_id" : "100025139550829"
                }, 
             ]
         },
    "comments" : [ 
            {
                "comment" : "Super",
                "commentator" : "Waseem Alamturki",
                "fb_id" : "100027080688922"
            }
          ],
"fb_id" : "100000107208292"
}

Мой подход -

result = db.post.find()
for doc in result:
   for post in doc['posts']:
       list_of_reactor_ids = []
       dict_of_reactor_ids = Counter()
       sorted_dict_of_reactor_ids = {}

Я просто подсчитываю, сколько раз конкретный fb_id нравится / смеется / люблю ... пост, а затем добавляю счетчик и сохраняю его в словаре, но я не могу получить полный список, и многие записи отсутствует в конечном результате

       if 'like' in post:
           value = 1
           for reactor in post['like']['reactors']:
               dict_of_reactor_ids.update({reactor['fb_id']: value})
       if 'laugh' in post:
           value = 2
           for reactor in post['laugh']['reactors']:
               dict_of_reactor_ids.update({reactor['fb_id']: value})

       if 'love' in post:
           value = 2
           for reactor in post['love']['reactors']:
                dict_of_reactor_ids.update({reactor['fb_id']: value})

Здесь я сортирую словарь по убыванию, а затем сохраняю словарь в другом словаре 'okey' с ключами в качестве fb_id, которыми являются последующие реакторы.

      sorted_dict_of_reactor_ids = sorted(dict_of_reactor_ids.items(),
                                        key=lambda dict_of_reactor_ids: dict_of_reactor_ids[1], reverse=True)
       if 'fb_id' in doc:
           okey.update({doc['fb_id']: sorted_dict_of_reactor_ids})
pprint.pprint(okey)

Но вывод, который я получаю, почти не содержит многих значений и не является полным. P.S. Я попытался вставить сюда очень ограниченный код, поэтому задавайте любые вопросы, если что-то не понятно.

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