У меня есть список ключевых слов, например ['a':{'bob','cat'},'b':{'harry','dog'},'c':{'pog','stair'}]
. У меня есть список документов в коллекции MongoDB, такой как
{ 'article one contents':['harry','window','leg'],
'article two contents':['dog','pog','lamp'],
'article three contents':['cat','pong','arm'],
}
Как я могу создать следующий вывод, используя только запросы MongoDB?
{'keyword categories in article one:['b'],
'keyword categories in article two:['b','c'],
'keyword categories in article three:['a']}
Мой текущий подход заключается в запросе MongoDB и выполните следующие действия на клиенте:
for author in authors:
publication_count=0
for pmid in pmids:
article_text = list(researchers.find({'pmid':pmid},
{'_id':0,'article_as_keywords':1}))[0]
if len(set(keywords) & set(article_text)) > 1:
publication_count += 1
collection.find_one_and_update({"_id":author},
{"$set":{pub_count_label: publication_count}})
Этот подход довольно медленный, он занимает большую часть 12 часов, чтобы перебрать 2 набора из (1 641 656 вычислений = 8 категорий ключевых слов X 35731 исследователей + 8 ключевых слов категории х 169476 исследователей). Я полагаю, было бы быстрее сделать все это на сервере.