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

Cách tốt nhất để xử lý các khóa compsite khi sử dụng Salat với MongoDB là gì?

nhà phát triển Salat chính tại đây.

Giống như Milan đã đề xuất, hãy tạo một lớp trường hợp cho khóa tổng hợp của bạn:

case class FooKey(someRelatedId: String, email: String)

case class Foo(@Key("_id") naturalKey: FooKey) {

  // use @Persist if you want these fields serialized verbatim to Mongo - see https://github.com/novus/salat/wiki/Annotations for details
  @Persist val email =  naturalKey.email
  @Persist val someRelatedId = naturalKey.someRelatedId

}

object FooDAO extends SalatDAO[Foo, FooKey](collection = /*  some Mongo coll */ )

Nếu bạn phản đối "_id" làm tên trường, bạn có thể sử dụng ghi đè toàn cục trong ngữ cảnh để sửa lại "_id" thành "naturalKey" hoặc cung cấp ghi đè đặc biệt @Key trên từng đối tượng.

Cá nhân tôi không thích đặt tên khác cho _id trong các mô hình của bạn vì khi đó các truy vấn Mongo của bạn phải sử dụng khóa được tuần tự hóa "_id" trong khi tất cả logic nghiệp vụ của bạn phải sử dụng tên trường lớp trường hợp ("naturalKey" hoặc bất cứ thứ gì), nhưng YMMV .

P.S. Danh sách gửi thư của chúng tôi có tại http://groups.google.com/group/scala-salat - Tôi sẽ xem câu hỏi của bạn ở đó nhanh hơn Stack Overflow.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để bạn thiết lập bộ bản sao Mongo trên Kubernetes?

  2. Cần hướng dẫn về tra cứu tổng hợp mongo để đếm các nốt con trong tất cả các nút con cho mỗi nút

  3. Làm cách nào để bạn chọn tất cả các bản ghi từ bộ sưu tập mongodb trong golang bằng cách sử dụng mgo

  4. Nhóm và đếm với điều kiện

  5. Mongoose - Tổng hợp $ đối sánh dựa trên các giá trị enum