Điều này sẽ không giải quyết được vấn đề của bạn, nhưng nó sẽ chỉ cho bạn đúng hướng và có thể cho phép bạn tách biệt vấn đề mà bạn có thể sử dụng để tạo một câu hỏi mới:
Không có. Chỉ có một chỉ mục và nó có tên và bộ mô tả khóa. Đó không phải là điều tương tự. Tên của chỉ mục mặc định là _id_
, khóa của nó là _id
.
_id
thường được tạo phía máy khách, không phía máy chủ. Câu hỏi đặt ra là các khóa đó đến từ đâu, bởi vì 2ZGvRfuD8iMvRiXJd
chắc chắn không phải là ObjectId
. Đây có thể là khóa sao băng hoặc bạn sử dụng một số khóa chính tùy chỉnh, nhưng tôi không biết các khóa này được tạo ra như thế nào. Có thể bất cứ thứ gì tạo ra khóa đều dễ bị va chạm?
Thông tin thêm về điều đó sẽ hữu ích, nhưng tôi khuyên bạn nên diễn đạt một câu hỏi mới để câu hỏi không quá lớn hoặc có nhiều lịch sử.
Đó là bổ đề của câu trả lời đầu tiên:Bạn không thể xóa chỉ mục khóa chính bắt buộc.
Chỉnh sửa:
Theo mặc định, Meteor, tạo id theo cách khác với MongoDb
. Điều đó có ý nghĩa, bởi vì quy ước cho ObjectId
làm cho xung đột có thể xảy ra nếu số lượng khách hàng lớn
(nghĩa là nếu máy khách không phải là phiên bản máy chủ mà là trình duyệt máy khách, trong đó có thể có 2-3 bậc lớn hơn).
Thay vào đó, Meteor dường như sử dụng phương pháp để tạo các số giả ngẫu nhiên một cách nhất quán trên máy khách và máy chủ . Thật khó chịu, việc triển khai sử dụng PRNG và trở lại không trình tạo số ngẫu nhiên xác định mạnh về tiền điện tử (Alea) . Nói cách khác, tìm ra cách chính xác id của bạn đang được tạo có thể phức tạp vì nó phụ thuộc vào rất nhiều chi tiết về môi trường của bạn.
Giải pháp:Hãy thử sử dụng ObjectId
làm khóa chính:
Orders= new Meteor.Collection('Orders', {idGeneration: 'MONGO'});