使用Pymongo重命名集合

时间:2018-02-21 15:26:23

标签: mongodb python-3.x pymongo

我意识到可以使用

在MongoDB中重命名集合
db["old_name"].renameCollection("new_name")

但是在PyMongo中有相同的东西吗?我尝试了以下方法,但它也没有用。

db["old_name"].rename_collection("new_name")

4 个答案:

答案 0 :(得分:2)

根据documentation,该方法名为rename

rename(new_name, session=None, **kwargs)

     new_name: new name for this collection
     session (optional): a ClientSession
     **kwargs (optional): additional arguments to the rename command may be passed as keyword arguments to this helper method (i.e. dropTarget=True)

答案 1 :(得分:1)

rename a collection的管理员命令可以用同样的方式执行。

query = {
    'renameCollection': '<source_namespace>', 
    'to': '<target_namespace>',
}
client.admin.command(query)

答案 2 :(得分:1)

也许您可以在pymongo中使用重命名,只需使用

db.oldname.rename('newname')

您可以检查链接: https://api.mongodb.com/python/current/api/pymongo/collection.html?highlight=rename

答案 3 :(得分:0)

   query = bson.son.SON([
       ('renameCollection', 't1.ccd'),
       ('to', 't2.ccd2'),
   ])
   print(query)
   self.mgclient.admin.command(query)

由于dict是无序的,因此需要使用bson.son.SON。请参考:

http://api.mongodb.com/python/current/api/bson/son.html#bson.son.SON http://api.mongodb.com/python/current/api/pymongo/database.html

  

请注意,命令文档中按键的顺序很重要(   “动词”必须排在最前面),因此需要多个键的命令(例如   findandmodify)应该使用SON的实例或字符串和kwargs   而不是Python字典。