Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对于PyMongo,如何使用create_index()导入使用索引信息()导出的索引?_Python_Mongodb_Pymongo - Fatal编程技术网

Python 对于PyMongo,如何使用create_index()导入使用索引信息()导出的索引?

Python 对于PyMongo,如何使用create_index()导入使用索引信息()导出的索引?,python,mongodb,pymongo,Python,Mongodb,Pymongo,您需要对index_information()的输出做些什么,以便使用create_index()或create_index()重新导入它 >>来自pymongo导入MongoClient >>>客户端=MongoClient(“mongodb://host1") >>>db=client.MYDB >>>collection=db.MYCOLLECTION >>>index=db.provisioning.index_information() >>>索引 {u''u id':{u'ns':u

您需要对index_information()的输出做些什么,以便使用create_index()或create_index()重新导入它

>>来自pymongo导入MongoClient
>>>客户端=MongoClient(“mongodb://host1")
>>>db=client.MYDB
>>>collection=db.MYCOLLECTION
>>>index=db.provisioning.index_information()
>>>索引
{u''u id':{u'ns':u'MYDB.MYCOLLECTION',u'key':[(u''u id',1)],u'v':1},u'Name'u 1':{u'unique':True,u'key':[(u'Name',1)],u'v':1,u'ns':u'MYDB.MYCOLLECTION',u'background u'background False},u'MongoType'u 1':{(u'MongoType',1)],u'ns':u'MYDB.MYCOLLECTION,u'v''
>>>client2=MongoClient(“mongodb://host2")
>>>db2=client2.MYDB
>>>collection2=db2.MYCOLLECTION
>>>集合2.创建索引(索引)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib64/python2.6/site packages/pymongo/collection.py”,第1161行,在create_索引中
键=助手。\索引\列表(键)
文件“/usr/lib64/python2.6/site packages/pymongo/helpers.py”,第55行,在索引列表中
raise TypeError(“如果未指定方向,”
TypeError:如果未指定方向,则键\或\列表必须是列表的实例
>>>集合2.创建索引(索引)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib64/python2.6/site packages/pymongo/collection.py”,第1046行,位于create_index中
raise TypeError(“索引必须是列表”)
TypeError:索引必须是列表

试试这个基本代码,它将迭代并将所有索引从一个集合添加到另一个集合

from pymongo import MongoClient

client = MongoClient("mongodb://host1")
db = client.MYDB
collection = db.MYCOLLECTION
index = db.provisioning.index_information()

client2 = MongoClient("mongodb://host2")
db2 = client2.MYDB
collection2 = db2.MYCOLLECTION
for i in index.keys():
    name_index = index[i]['key'][0][0]
    order = index[i]['key'][0][1]
    collection2.create_index([(name_index, order)])

根据create_index或create_indexes方法需要一个键或键列表,方向对。您可以在代码中迭代
索引
,形成一个列表,该列表可用于创建_index方法,该方法如何工作?您能给我一个例子吗?>>关于index.iteritems()中的项:…collection2.创建_index(项)…回溯(最后一次调用):文件“”,第2行,文件“/usr/lib64/python2.6/site packages/pymongo/collection.py”,第1162行,在create_index name=kwargs.setdefault(“name”,helpers._genuindex_name(keys))文件“/usr/lib64/python2.6/site packages/pymongo/helpers.py”,第41行,在_genindex_index_name return _UUNDER.join([%s]%item for item in keys])类型错误:没有足够的参数用于格式字符串如果您的索引更复杂,它似乎不会捕获所有这些:{“v”:1,“key”:{“Thing1.Thing2”:1,“Thing1.Thing3”:1,“Thing1.Thing3”:1,“Thing1.Thing4”:1},“unique”:true,“ns”:“MYDB.mycollection”,“name”:“Thing1.Thing2_1_1_1.Thing1.Thing3_1_1.Thing1.Thing4_1”}
from pymongo import MongoClient

client = MongoClient("mongodb://host1")
db = client.MYDB
collection = db.MYCOLLECTION
index = db.provisioning.index_information()

client2 = MongoClient("mongodb://host2")
db2 = client2.MYDB
collection2 = db2.MYCOLLECTION
for i in index.keys():
    name_index = index[i]['key'][0][0]
    order = index[i]['key'][0][1]
    collection2.create_index([(name_index, order)])