我意识到可以使用
在MongoDB中重命名集合db["old_name"].renameCollection("new_name")
但是在PyMongo中有相同的东西吗?我尝试了以下方法,但它也没有用。
db["old_name"].rename_collection("new_name")
答案 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字典。