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

Làm cách nào để xóa _id trong MongoDB và thay thế bằng một trường khác làm Khóa chính?

Trong mongodb, mỗi tài liệu phải là duy nhất, vì vậy bạn cần một trường duy nhất được sử dụng làm id. Nếu bạn không cung cấp, mongodb sẽ tự động cung cấp cho bạn. Tuy nhiên, nếu bạn muốn cung cấp id tùy chỉnh cho bất kỳ lý do nào (cải thiện hiệu suất truy vấn là một trong số chúng), bạn có thể thực hiện theo cách thủ công. Đây là gợi ý của tôi:

Nếu bạn đang chèn một tài liệu mới, bạn có thể đặt trường _id theo cách thủ công như:

doc._id = "12312312" //(Or whichever function to generate id you have)
doc.save(...)

Nhưng khi bạn đã có một tài liệu trong cơ sở dữ liệu, bạn không thể sửa đổi nó nữa. Những gì bạn có thể làm là tạo một bản sao của tài liệu, lưu tài liệu mới với cùng dữ liệu và xóa tài liệu cũ:

// Fetch the documents
docs = db.clients.find({})

docs.forEach((doc) => {
   //For each field you copy the values
   new_doc.field = doc.field
   new_doc._id = //YOUR ID FUNCTION 

   // insert the document, using the new _id
   db.clients.insert(new_doc)

   // remove the document with the old _id
   db.clients.remove({_id: doc._id})
}

Câu hỏi này tương tự như câu hỏi sau:

Làm cách nào để cập nhật _id của một Tài liệu MongoDB?

Hy vọng câu trả lời của tôi hữu ích



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không thể khởi động lại mongodb trên Ubuntu 11.04

  2. Kết nối từ xa với máy chủ MongoDB bằng Codeigniter

  3. Mongoose find (), làm thế nào để truy cập các tài liệu kết quả?

  4. Kiểm tra chuỗi trống trong mongodb và pymongo

  5. Làm cách nào để ghi lại các truy vấn của tôi trong MongoDB C # Driver 2.0?