我有一个巨大的MongoDB数据库,由mongoengine驱动,其中的对象有一个日期。为了使工作更轻松,我想归档旧对象,但要将它们保存在某处。
我一直在阅读文档,遇到switch_db
和switch_collection
。但是,我无法工作。
对于这两种情况,文档都引用了两种使用场景。
作为QuerySet
操作:
user = User.objects.get(id=user_id)
user.switch_collection('old-users')
user.save()
这个问题是它只适用于单个对象。无法批量存档多个文档。
作为context_manager
:
with switch_collection(Group, 'group1') as Group:
Group(name="hello testdb!").save() # Saves in group1 collection
使用此功能,我甚至无法进行查询,收到以下错误:
ValidationError (Document:None) (Field is required...
我尝试使用mongoengine搜索存档数据的方法,但似乎没有任何选项可行。你有什么建议吗?
答案 0 :(得分:0)
如果您可以访问MongoDB实例本身,为什么不直接针对它进行查询,而不是通过MongoEngine的跳跃?
您可以使用以下命令将当前users
集合重命名为users-old
:
http://docs.mongodb.org/manual/reference/command/renameCollection/
然后运行一个简单的脚本将较新的值复制到新的users
集合