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

Mongo _id cho mảng tài liệu con

Tôi giả sử:

{
    g: [
        { _id: ObjectId(), property: '' },
        // next
    ]
}

Loại cấu trúc cho câu hỏi này.

Không bình thường. _id s là số nhận dạng duy nhất cho các thực thể. Như vậy nếu bạn đang muốn thêm _id trong một đối tượng tài liệu con thì bạn có thể chưa chuẩn hóa dữ liệu của mình tốt lắm và đó có thể là dấu hiệu của một lỗ hổng cơ bản trong thiết kế lược đồ của bạn.

Tài liệu con được thiết kế để chứa dữ liệu lặp lại cho tài liệu đó, tức là địa chỉ hoặc người dùng hoặc thứ gì đó.

Điều đó đang được nói _id không phải lúc nào cũng là một điều xấu để thêm vào. Lấy ví dụ tôi vừa nêu với các địa chỉ. Hãy tưởng tượng bạn có một hệ thống giỏ hàng và (vì lý do nào đó) bạn không sao chép địa chỉ vào tài liệu đặt hàng thì bạn sẽ sử dụng _id hoặc một số định danh khác để lấy tài liệu con đó ra.

Ngoài ra, bạn phải xem xét việc liên kết các tài liệu. Nếu _id đó mô tả một tài liệu khác và các thuộc tính là thuộc tính tùy chỉnh cho tài liệu đó liên quan đến tài liệu được liên kết đó thì điều đó cũng ổn.

Một ObjectId vẫn còn khá lớn nên điều này cần xem xét đối với id nhỏ hơn, ít duy nhất hoặc không sử dụng _id đối với các tài liệu phụ.

Đối với các chỉ mục, nó không thực sự hoạt động khác với _id tiêu chuẩn trường trên chính tài liệu và một chỉ mục duy nhất trên toàn trường sẽ hoạt động trên toàn bộ tập hợp (tùy theo tình huống, hãy kiểm tra các truy vấn của bạn).

NB:MongoDB sẽ không thêm _id tới các tài liệu phụ cho bạn.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. DeprecationWarning:collection.findAndModify không được dùng nữa. Sử dụng findOneAndUpdate, findOneAndReplace hoặc findOneAndDelete thay thế?

  2. Mongodb $ trong chống lại một trường các đối tượng của mảng thay vì các đối tượng của mảng

  3. Cách hợp nhất dữ liệu từ hai bộ sưu tập trong MongoDB

  4. Hướng dẫn nâng cấp trong MongoDB

  5. Làm thế nào để chuyển đổi Date thành UTC trong MongoMapper &Ruby / Rails?