PyMongo: как использовать агрегирование и сохранение результатов в другой коллекции? - PullRequest
0 голосов
/ 09 мая 2018

Предположим коллекцию с документами, которые выглядят так:

{
    "username" : "Aventinus"
    "text": "I love StackOverflow!",
    "tags": [
      "programming",
      "mongodb"
    ]
}

Используя текстовый индекс и следующую команду в MongoDB, я могу найти все документы, текст которых содержит слово StackOverflow, и сохранить их в другой коллекции:

db.C_a.aggregate([
  {$match: {$text: {$search:"StackOverflow"}}},
  {$out:"C_b"}
]);

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

Вопрос : Что эквивалентно приведенному фрагменту в PyMongo?

1 Ответ

0 голосов
/ 09 мая 2018

Ниже приведен работоспособный код, протестированный на версии pymongo 3.6.1 и python 3.6.4

.
    import pymongo
    from pymongo import MongoClient
    client = MongoClient('127.0.0.1')  # mongodb running locally
    dbRead = client['test']            # using the test database in mongo
    # create the pipeline required 
    pipeline = [{"$match": {"$text": {"$search":"StackOverflow"}}},{"$out":"C_b"}]  # all attribute and operator need to quoted in pymongo
    dbRead.C_a.aggregate(pipeline)  #execution 
    print (dbRead.C_b.count()) ## verify count of the new collection 
...