2011-08-11 28 views
6

Tôi đang xây dựng cơ sở dữ liệu với một số bộ sưu tập. Tôi có các chuỗi duy nhất mà tôi dự định sử dụng cho tất cả các tài liệu trong bộ sưu tập chính. Tài liệu trong các bộ sưu tập khác sẽ tham khảo tài liệu trong bộ sưu tập chính, có nghĩa là tôi sẽ phải lưu các id được cho biết trong các bộ sưu tập khác. Tuy nhiên, nếu _id chỉ cần duy nhất trên một bộ sưu tập chứ không phải trên toàn bộ cơ sở dữ liệu, thì tôi sẽ chỉ làm cho _id trong các bộ sưu tập khác cũng sử dụng các chuỗi duy nhất nói trên.Trong MongoDB, làm tài liệu _id cần phải là duy nhất trên một bộ sưu tập hoặc toàn bộ DB?

Ngoài ra, tôi giả định rằng để đặt _id của riêng mình, tất cả những gì tôi phải làm là có thuộc tính "_id":"unique_string" như một phần của tài liệu mà tôi chèn, đúng không? Tôi sẽ không cần phải chuyển đổi "unique_string" sang định dạng khác, phải không?

Ngoài ra, giả thuyết, tôi có thể có biến lưu chuỗi "_id" và sử dụng biến đó không? Chỉ cần được rõ ràng, một cái gì đó như sau: var id = "_id" và sau đó sau trong mã (trong một chèn hoặc một truy vấn ví dụ) có id:"unique_string".

nhất, và cảm ơn,
Sami

Trả lời

9

_id s phải là duy nhất trong bộ sưu tập. Bạn có thể nhanh chóng xác minh điều này bằng cách chèn hai tài liệu với cùng một _id vào hai bộ sưu tập khác nhau.

Giả định khác của bạn là chính xác, chỉ cần thử chúng và xem liệu chúng có hoạt động hay không. miếng bánh pudding đang bị ăn dở.

Lưu ý: sử dụng trực tiếp _id, var id = "_id" chỉ cần biên soạn mã.

+0

cảm ơn! Tôi đoán bạn nói đúng - tôi có thể dễ dàng tự mình thử điều này. Ngoài ra, câu hỏi id = "_id" có ý nghĩa nhiều hơn cho các khóa tiềm năng khác trong một tài liệu nhất định, chứ không phải là "_id". nếu nó hoạt động, nó sẽ làm việc cho người khác. cảm ơn cho phản ứng của bạn mặc dù! Tôi đánh giá cao nó! – thisissami

+0

hey yi_H, tôi chỉ muốn cho bạn biết rằng phần sau của câu trả lời của bạn không chính xác. Bạn không thể sử dụng các biến để biểu diễn khóa - ít nhất là không trực tiếp. bạn phải lưu tài liệu trước và chuyển tài liệu đó vào truy vấn nếu bạn muốn thực hiện bất kỳ điều gì với các biến dọc theo các dòng đó. – thisissami

+0

@thisissami: Tôi không hiểu bạn ... Tôi có thể nghĩ ra một vài lý do tại sao nó không hoạt động, ví dụ: trong một đối tượng javascript, phần chính được phân tích thành chuỗi (đó là lý do tại sao bạn không bao giờ phải trích dẫn nó). Bạn có thể làm điều đó với 'id =" _ id "; doc = {...}; doc [id] = giá trị; ' –

Các vấn đề liên quan