MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Pymongo / MongoDB:създаване на индекс или осигуряване на индекс?

@andreas-jung е прав в този ensure_index() е обвивка върху create_index() , мисля, че объркването възниква с фразата:

Когато индекс е създаден (или осигурен) от PyMongo, той се „запомня“ за ttlsecond.

Не че индексът е временен или "преходен", това, което се случва е, че по време на посочения период от секунди, извикване на ensure_index() опит за създаване на същия индекс отново не имат някакъв ефект и няма даси извикайте create_index() отдолу, но след като този "кеш" изтече, извикване на ensure_index() ще отново извикайте create_index() отдолу.

Разбирам напълно объркването ви, защото, честно казано, документите на PyMongo не се справят много добре с обяснението как работи това, но ако отидете на документите на Ruby, обяснението е малко по-ясно:

  • (String) provide_index(spec, opts ={})

Извиква create_index и задава флаг, за да не го прави отново за още X минути. Това време може да бъде посочено като опция при инициализиране на Mongo::DBobject като опции[:cache_time] Всякакви промени в индекса ще бъдат разпространени през независимо от времето на кеша (напр. промяна на посоката на индекса)

Параметрите и опциите за тези методи са същите като тези заCollection#create_index.

Примери:

Call sequence:

Time t: @posts.ensure_index([['subject', Mongo::ASCENDING]) -- calls create_index and sets the 5 minute cache

Time t+2min : @posts.ensure_index([['subject', Mongo::ASCENDING]) -- doesn't do anything

Time t+3min : @posts.ensure_index([['something_else', Mongo::ASCENDING]) -- calls create_index and sets 5 minute cache

Time t+10min : @posts.ensure_index([['subject', Mongo::ASCENDING]) -- calls create_index and resets the 5 minute counter

Не твърдя, че драйверите работят точно по същия начин, просто за илюстрация обяснението им е малко по-добро IMHO.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 3 начина да получите седмицата от среща в MongoDB

  2. Как да започнете с автоматизацията на базата данни

  3. mongoDB/mongoose:уникален, ако не е нула

  4. MongoDB $час

  5. Търсене на стойност на всяко поле в MongoDB без изрично именуване