MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Pymongo / MongoDB:tạo chỉ mục hay đảm bảo chỉ mục?

@ andreas-jung đúng trong ensure_index() là một trình bao bọc trên create_index() , Tôi nghĩ rằng sự nhầm lẫn nảy sinh với cụm từ:

Khi một chỉ mục được tạo (hoặc đảm bảo) bởi PyMongo, nó sẽ được "ghi nhớ" trong ttlseconds.

Không phải chỉ mục là tạm thời hay "tạm thời", điều xảy ra là trong khoảng thời gian được chỉ định của giây, một lệnh gọi đến ensure_index() cố gắng tạo lại cùng một chỉ mục sẽ không có bất kỳ ảnh hưởng nào và sẽ không gọi create_index() bên dưới, nhưng sau khi "bộ nhớ đệm" đó hết hạn, một lệnh gọi đến ensure_index() sẽ gọi lại create_index() bên dưới.

Tôi hoàn toàn hiểu được sự nhầm lẫn của bạn vì thực sự mà nói thì các tài liệu của PyMongo không thực hiện tốt công việc giải thích cách hoạt động của điều này, nhưng nếu bạn xem qua các tài liệu Ruby, thì lời giải thích sẽ rõ ràng hơn một chút:

  • (Chuỗi) ensure_index (spec, opts ={})

Gọi create_index và đặt cờ để không làm như vậy nữa trong X phút nữa. Thời gian này có thể được chỉ định là quá trình ẩn khi khởi tạo Mongo ::DBobject dưới dạng tùy chọn [:cache_time] Mọi thay đổi đối với chỉ mục sẽ được thông báo bất kể thời gian lưu trong bộ nhớ cache (ví dụ:a thay đổi hướng chỉ mục)

Các tham số và tùy chọn cho phương thức này cũng giống như choCollection # create_index.

Ví dụ:

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

Tôi không khẳng định các trình điều khiển hoạt động hoàn toàn giống nhau, chỉ là vì mục đích minh họa, giải thích của họ tốt hơn một chút IMHO.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không thể kết nối với MongoDB qua node.js trong Docker

  2. 3 cách trả lại mẫu tài liệu ngẫu nhiên từ bộ sưu tập MongoDB

  3. Dữ liệu mùa xuân MongoDb:MappingMongoConverter loại bỏ _class

  4. Các tài liệu duy nhất sử dụng nhiều giá trị trong Mongoose Schema

  5. cách tải xuống tệp được lưu trong gridFS bằng nodeJS