【问题标题】:Pymongo - Process only newly updated documents?Pymongo - 只处理新更新的文档?
【发布时间】:2019-02-06 05:53:24
【问题描述】:

所以我是 Pymongo 和 MongoDB 的新手,我只是对如何最好地解决这个问题感到困惑。我有两个收藏:

Raw_collection 
Processed_collection 

基本上,我有原始文档进入Raw_collection,之后我通过删除一些基于过滤器等的文档来处理它们,并将剩余的文档存储到Processed_collection。具体来说,我还计划定期更新Raw_collection 中的记录。

因此,在后续更新中仅将新插入的文档处理到Raw_collection 的最佳方法是什么?我查看了bulk methods,但我不确定这是否是我想要的......这似乎是一个简单的问题,但由于我的经验不足,我不确定解决方案是什么。非常感谢任何帮助,谢谢!

【问题讨论】:

  • 您是否考虑过在原始文档中维护其他字段,例如插入的时间戳,然后在您更新它们时重新设置并在处理过程中进行相应的过滤?

标签: python-3.x mongodb pymongo


【解决方案1】:

所以我最终通过 pymongo 的 insert_many 方法这样做了:

import pandas 
import pymongo

insert_raw_collection(): #call First
     result = db[collection].insert_many(documents)
     obj_id_list = result.inserted_ids
     #[ObjectId('54f113fffba522406c9cc20e'), ObjectId('54f113fffba522406c9cc20f')]
     return obj_id_list

insert_processed_collection(obj_id_list): # call Second 
     cursor = raw_collection_pandas_data_frame.find({"_id": {"$in": obid_list}})
     for doc in cursor:
         if filter(doc) == True 
             # do something 

基本上,我从上一个插入步骤返回插入的ObjectId 列表并执行过滤操作,以便我知道要保留哪个。

【讨论】:

    猜你喜欢
    • 2014-10-24
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 2015-11-18
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多