Как запросить максимальную метку времени из одной коллекции, используя user_id из другой коллекции в Mongo - PullRequest
0 голосов

У меня есть одна база данных Монго с двумя коллекциями.Один с твитами в json-объектах и ​​один с деревьями разговоров.

Эти деревья имеют только идентификаторы пользователей и твитов.Поэтому я хочу получить текст последнего твита с наибольшей отметкой времени мс в определенной ветви дерева из коллекции твитов, используя коллекцию дерева.Позже я хочу выполнить анализ настроений.

Я использую python / pymongo, vader и mongodb.

Мой код теперь проходит по деревьям и помещает tweet_id каждой ветви в "listt",То, что я хочу сделать, это использовать этот список и выбрать твит с наибольшей отметкой времени.Но timestamp_ms находится в другой коллекции под названием «collection», а timestamp_ms - это строка.Я хочу запросить его, чтобы получить только самый высокий объект твита timestamp_ms и добавить его в список, чтобы получить все самые высокие объекты твита timestamp_ms.

def sentiment_(trees, vader=True, ignore_id=-1):
    tree_count = len(trees)
    total_count = tree_count

    for i, tree in enumerate(trees):
        analysis_root2 = perform_sentiment(use_vader, sentence=collection.find_one({"id": tree.root.id})['text'])
        listt = []
        for node in tree.descendants:
            if node.is_leaf:
                listt.append(node.id)
        print(listt)
        for x in range(len(listt)):
            test2 = collection.find_one({"id": listt[i], "user.id": tree.user_id}).sort("timestamp_ms", -1)

Пробовал несколько запросов, но все они выдают ошибки.

...