sql >> Databáze >  >> NoSQL >> MongoDB

pomocí klíče jako hodnoty v Mongoengine

Uvažovali jste o použití PyMonga přímo namísto použití Mongoengine? Mongoengine je navržen tak, aby deklaroval a ověřoval schéma pro vaše dokumenty, a poskytuje k tomu mnoho nástrojů a vymožeností. Pokud se vaše dokumenty budou lišit, nejsem si jistý, zda je Mongoengine pro vás tou správnou volbou.

Pokud však máte některá pole ve všech dokumentech společná a každý dokument má určitou sadu polí specifických pro sebe, můžete použít DictField Mongoengine. . Nevýhodou je, že klávesy nebudou "top-level", například:

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

Výsledkem je dokument MongoDB jako:

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

Upravit: Měl bych také poznamenat, že se pracuje na vývojové větvi Mongoengine pro "dynamické" dokumenty, kde budou atributy na instancích dokumentu Python uloženy při uložení modelu. Viz https://github.com/hmarr/mongoengine/pull/112 podrobnosti a historii.




  1. MongoDB C# Index pole nebo indexování vnitřních položek polí

  2. Připojování k dokovacímu kontejneru Mongodb z jiného dokovacího kontejneru

  3. RQ - Empty &Delete Queues

  4. $blízko dotaz přes Java