在mongoengine中存档旧数据

时间:2014-06-23 14:12:50

标签: python mongoengine

我有一个巨大的MongoDB数据库,由mongoengine驱动,其中的对象有一个日期。为了使工作更轻松,我想归档旧对象,但要将它们保存在某处。

我一直在阅读文档,遇到switch_dbswitch_collection。但是,我无法工作。

对于这两种情况,文档都引用了两种使用场景。

  1. 作为QuerySet操作:

    user = User.objects.get(id=user_id)
    user.switch_collection('old-users')
    user.save()
    

    这个问题是它只适用于单个对象。无法批量存档多个文档。

  2. 作为context_manager

    with switch_collection(Group, 'group1') as Group:
    Group(name="hello testdb!").save()  # Saves in group1 collection
    

    使用此功能,我甚至无法进行查询,收到以下错误:

    ValidationError (Document:None) (Field is required...
    
  3. 我尝试使用mongoengine搜索存档数据的方法,但似乎没有任何选项可行。你有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您可以访问MongoDB实例本身,为什么不直接针对它进行查询,而不是通过MongoEngine的跳跃?

您可以使用以下命令将当前users集合重命名为users-old

http://docs.mongodb.org/manual/reference/command/renameCollection/

然后运行一个简单的脚本将较新的值复制到新的users集合