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

thứ tự sắp xếp mongodb trên _id

Để mở rộng một chút về những gì Andre đã nói:

Vì dấu thời gian của ObjectID chỉ là dấu thời gian thứ hai, hai (hoặc nhiều) ObjectID có thể dễ dàng được tạo với cùng một giá trị cho dấu thời gian (4 byte đầu tiên). Nếu chúng được tạo trên cùng một máy (ID máy - 3 byte tiếp theo), bằng cùng một quy trình (PID - 2 byte tiếp theo), thì điều duy nhất để phân biệt chúng sẽ là trường "inc", 3 byte cuối cùng ở phần cuối.

Cập nhật:tháng 1 năm 2020

Câu trả lời này tiếp tục phổ biến vì vậy nó đáng để cập nhật một chút. Thông số ObjectID đã phát triển kể từ khi câu trả lời này được viết 8 năm trước và 5 byte sau dấu thời gian giờ chỉ đơn giản là ngẫu nhiên, điều này sẽ làm giảm đáng kể khả năng xảy ra bất kỳ va chạm nào. Ba byte cuối cùng vẫn tăng dần, nhưng được khởi tạo ở một giá trị ngẫu nhiên để bắt đầu, một lần nữa làm cho xung đột ít xảy ra hơn. ObjectID bây giờ chứa ít ngữ cảnh hơn (bạn không thể dễ dàng biết nó được tạo ra ở đâu và bằng quy trình nào) nhưng tôi đoán rằng thông tin không được sử dụng theo bất kỳ cách nào có ý nghĩa và đã không được chấp nhận để tạo ra sự ngẫu nhiên tốt hơn cho ID.

Kết thúc cập nhật

Xem tại đây để biết thông số kỹ thuật đầy đủ:

https://docs.mongodb.com/manual/reference/method/ObjectId/#ObjectIDs-BSONObjectIDSpecification

Trường "inc" đó là trường luôn tăng dần (khi đó bạn có thể mong đợi sắp xếp một cách hợp lý trong thứ tự chèn / tạo) hoặc một giá trị ngẫu nhiên (sau đó có thể là duy nhất, nhưng không có thứ tự), tất nhiên giả sử rằng thông số được triển khai chính xác . Lưu ý rằng các ObjectID có thể được tạo bởi trình điều khiển hoặc ứng dụng (hoặc thực sự theo cách thủ công) chứ không phải bởi chính MongoDB, vì vậy trừ khi bạn có toàn quyền kiểm soát cách chúng được tạo ra, thì bất kỳ hoặc tất cả những điều trên đều có thể áp dụng.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Procfile là gì? và Web và Worker

  2. Cách chiếu chỉ mục mảng sau khi giải nén một mảng với khung tổng hợp MongoDB

  3. Làm cách nào để định cấu hình MongoDB của tôi để tính đến UTF-8?

  4. Xu hướng NoSQL - MongoDB, Cassandra, CouchDB &Riak

  5. Ứng dụng Meteor - đặt lại DB của ứng dụng đã triển khai