MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

използване на ключ като стойност в Mongoengine

Обмисляли ли сте да използвате PyMongo директно вместо да използвате Mongoengine? Mongoengine е проектиран да декларира и валидира схема за вашите документи и предоставя много инструменти и удобства около това. Ако вашите документи ще се различават, не съм сигурен, че Mongoengine е правилният избор за вас.

Ако обаче имате някои общи полета във всички документи и след това всеки документ има някакъв набор от полета, специфични за себе си, можете да използвате DictField на Mongoengine . Недостатъкът на това е, че ключовете няма да бъдат "от най-високо ниво", например:

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()

Резултати в MongoDB документ като:

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

Редактиране: Трябва също да отбележа, че в момента се работи по клона за разработка на Mongoengine за „динамични“ документи, където атрибутите на екземплярите на документа на Python ще бъдат запазени, когато моделът бъде запазен. Вижте https://github.com/hmarr/mongoengine/pull/112 за подробности и история.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Удостоверете се след избор на базата данни

  2. Ruby/релси:mongoid с mongo(скъпоценен камък); bson конфликт? Как да се справим с различните версии?

  3. Как да се свържете с mongodb с помощта на docker-compose?

  4. MongoDB - Намерете документи, отговарящи на определени условия за неизвестни ключове на полета

  5. Конфигуриране на QueryDSL за Spring Data и MongoDB с Gradle