Я пытаюсь выполнить итерацию следующего 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. Я попытался вставить сюда очень ограниченный код, поэтому задавайте любые вопросы, если что-то не понятно.