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

sử dụng khóa làm giá trị trong Mongoengine

Bạn đã cân nhắc sử dụng PyMongo trực tiếp thay vì sử dụng Mongoengine chưa? Mongoengine được thiết kế để khai báo và xác thực một lược đồ cho tài liệu của bạn, đồng thời cung cấp nhiều công cụ và tiện ích xung quanh đó. Nếu tài liệu của bạn thay đổi, tôi không chắc Mongoengine là lựa chọn phù hợp cho bạn.

Tuy nhiên, nếu bạn có một số trường chung trên tất cả các tài liệu và sau đó mỗi tài liệu có một số trường cụ thể cho chính nó, bạn có thể sử dụng DictField của Mongoengine . Nhược điểm của điều này là các khóa sẽ không phải là "cấp cao nhất", ví dụ:

class UserThings(Document):
    # you can look this document up by username
    username = StringField()

    # you can store whatever you want here
    things = DictField()

dcrosta_things = UserThings(username='dcrosta')
dcrosta_things.things['foo'] = 'bar'
dcrosta_things.things['bad'] = 'quack'
dcrosta_things.save()

Kết quả trong một tài liệu MongoDB như:

{ _id: ObjectId(...),
  _types: ["UserThings"],
  _cls: "UserThings",
  username: "dcrosta",
  things: {
    foo: "bar",
    baz: "quack"
  }
}

Chỉnh sửa: Tôi cũng nên lưu ý, nhánh phát triển của Mongoengine dành cho các tài liệu "động" đang được tiến hành, trong đó các thuộc tính trên các phiên bản tài liệu Python sẽ được lưu khi mô hình được lưu. Xem https://github.com/hmarr/mongoengine/pull/112 để biết chi tiết và lịch sử.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tạo chỉ mục một phần khi trường không rỗng

  2. Làm thế nào để bạn kết xuất nhiều mẫu với một bộ điều khiển tuyến đường sử dụng bộ định tuyến sắt?

  3. Làm thế nào để kết nối với MongoDB 3.2 trong Java bằng tên người dùng và mật khẩu?

  4. Tổng hợp nhóm theo ngày với bù đắp tiết kiệm ánh sáng ban ngày

  5. C # MongoDB.Driver GetServer là Gone, What Now?