PyMongo:如何使用聚合并将结果存储到另一个集合?

时间:2018-05-09 17:47:48

标签: python mongodb pymongo

假设一个包含以下文档的集合:

{
    "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 :(得分:1)

以下是在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