我不明白create_index和ensure_indexpymongo 之间的区别.在MongoDB索引页面上,它说
你可以通过调用来创建一个索引
ensureIndex()
然而,在pymongo有两个不同的命令create_index和ensure_index,并为创建索引有文档:
与尝试无条件地创建索引的create_index()不同,ensure_index()利用驱动程序中的某些缓存,以便它只尝试创建可能尚不存在的索引.当PyMongo创建(或确保)索引时,它会被"记住"ttl秒.在该时间限制内重复调用ensure_index()将是轻量级的 - 它们不会尝试实际创建索引.
我是否正确理解ensure_index将创建一个永久索引,或者我是否需要使用create_index它?
让我们有一个MongoDB有三个文档的集合..
db.collection.find()
{ _id:'...', user: 'A', title: 'Physics', Bank: 'Bank_A' }
{ _id:'...', user: 'A', title: 'Chemistry', Bank: 'Bank_B' }
{ _id:'...', user: 'B', title: 'Chemistry', Bank: 'Bank_A' }
Run Code Online (Sandbox Code Playgroud)
我们有一份文件,
doc = { user: 'B', title: 'Chemistry', Bank:'Bank_A' }
Run Code Online (Sandbox Code Playgroud)
如果我们使用
db.collection.insert(doc)
Run Code Online (Sandbox Code Playgroud)
在这里,这个重复的文档将插入数据库中.
{ _id:'...', user: 'A', title: 'Physics', Bank: 'Bank_A' }
{ _id:'...', user: 'A', title: 'Chemistry', Bank: 'Bank_B' }
{ _id:'...', user: 'B', title: 'Chemistry', Bank: 'Bank_A' }
{ _id:'...', user: 'B', title: 'Chemistry', Bank: 'Bank_A' } …Run Code Online (Sandbox Code Playgroud)