sql >> Databasteknik >  >> NoSQL >> MongoDB

använder nyckel som värde i Mongoengine

Har du funderat på att använda PyMongo direkt istället för att använda Mongoengine? Mongoengine är utformad för att deklarera och validera ett schema för dina dokument, och tillhandahåller många verktyg och bekvämligheter kring det. Om dina dokument kommer att variera är jag inte säker på att Mongoengine är rätt val för dig.

Om du däremot har några fält gemensamma för alla dokument, och varje dokument har en uppsättning fält som är specifika för sig själv, kan du använda Mongoengines DictField . Nackdelen med detta är att nycklarna inte kommer att vara "top-level", till exempel:

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

Resultat i ett MongoDB-dokument som:

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

Redigera: Jag bör också notera att det pågår arbete med utvecklingsgrenen av Mongoengine för "dynamiska" dokument, där attribut på Python-dokumentinstanserna kommer att sparas när modellen sparas. Se https://github.com/hmarr/mongoengine/pull/112 för detaljer och historik.




  1. MongoDB välj var i array av _id?

  2. Hur läser man igenom samlingen i bitar med 1000?

  3. PHP-start Kan inte ladda det dynamiska biblioteket php_mongo.dll

  4. Rensa användarinmatning i Mongoose