sql >> Database >  >> NoSQL >> MongoDB

sleutel gebruiken als waarde in Mongoengine

Heeft u overwogen om PyMongo rechtstreeks te gebruiken in plaats van Mongoengine? Mongoengine is ontworpen om een ​​schema voor uw documenten te declareren en te valideren en biedt daarom veel tools en gemakken. Als uw documenten gaan verschillen, weet ik niet zeker of Mongoengine de juiste keuze voor u is.

Als u echter enkele velden gemeenschappelijk heeft in alle documenten, en elk document heeft een aantal velden die specifiek zijn voor zichzelf, dan kunt u Mongoengine's DictField gebruiken . Het nadeel hiervan is dat de toetsen niet "top-level" zijn, bijvoorbeeld:

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

Resultaten in een MongoDB-document zoals:

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

Bewerken: Ik moet ook opmerken dat er gewerkt wordt aan de ontwikkelingstak van Mongoengine voor "dynamische" documenten, waar attributen op de Python-documentinstanties worden opgeslagen wanneer het model wordt opgeslagen. Zie https://github.com/hmarr/mongoengine/pull/112 voor details en geschiedenis.




  1. mongodb-update komt overeen met document mislukt

  2. Stel de standaarddatum in het Mongoose-document in op nu + [enige verhoging]

  3. begrijp de nieuwe mongo-ID en gebruik deze met iron-router

  4. Mongo-authenticatie binnen Docker