在mongoengine中归档旧数据
我有一个很大的MongoDB数据库,里面的对象都有日期。为了方便管理,我想把旧的对象归档,但又想把它们保留在某个地方。
我在看文档的时候发现了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归档数据的方法,但没有一个选项能成功。你有什么建议吗?
1 个回答
0
如果你能直接访问MongoDB数据库,那为什么不直接在上面执行查询,而要通过MongoEngine这个工具呢?
你可以用这个命令把现在的 users
数据表重命名为 users-old
:
http://docs.mongodb.org/manual/reference/command/renameCollection/
然后再运行一个简单的脚本,把新的数据复制到一个新的 users
数据表里。