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

Chování projekce Morphia pro například proměnnou s výchozí hodnotou

Když Morphia čte vaše dokumenty z výsledků dotazu, první věc, kterou udělá, je vytvoření nové instance vaší entity, Student . Pouze vyvolá konstruktor bez argumentů. Není v tom žádná magie. Pole města je inicializováno hodnotou. Jakmile to uděláte, Morphia vezme každý klíč v dokumentu vrácený z databáze, najde mapované pole a nastaví ho. Ve vašem případě v dokumentu není klíč města, takže toto pole Morphia nikdy nenastaví a ponechá na místě inicializovanou hodnotu.

Obecně platí, že inicializace polí na entitách, jako je tato, je špatný postup. Pro každou entitu načtenou z databáze musí JVM tato pole inicializovat na nějakou hodnotu, aby je později přepsal. V případech, jako je ten váš, kdy se některá pole ve výsledku dotazu nevrátí, tyto hodnoty zůstanou i poté, co Morphia vrátí nové instance zpět do vaší aplikace.




  1. Nevýhoda výkonu při použití slugu jako primárního klíče/_id v mongo?

  2. Django-nonrel pomocí ListField obsahující EmbeddedObjects v admin

  3. Strašně snížený výkon s jinými podmínkami spojení v $lookup (pomocí kanálu)

  4. heroku mongohq a mongoid Mongo::ConnectionFailure