2014-05-16 4 views
4

Sans aucun doute lié à this question, mais comme il n'y avait pas de réponse claire, je me sens comme si je devrais demander à nouveau. Y at-il façon de supprimer un document incorporé d'une relation Mongoid embeds_many, sans persister?Puis-je supprimer un document incorporé dans Mongoid sans persister?

Je souhaite modifier la matrice de documents incorporés en mémoire, puis conserver toutes les modifications avec une seule opération UPDATE. Spécifiquement, je voudrais:

  1. Modifier les tableaux de documents incorporés (ajouter doc incorporé/supprimer doc incorporé/modifier doc incorporé/etc).
  2. Apporter éventuellement d'autres modifications au TLD.
  3. Conserver toutes les modifications avec un seul appel de base de données.

Répondre

0

Après deux ans d'utilisation de Mongoid, j'ai appris qu'il n'y avait pas d'opérateur pour ce que j'essayais d'accomplir. La suppression d'un document incorporé avec Mongoid entraîne toujours un appel à la base de données.

Dans des situations comme celle-ci, il est plus facile de contourner Mongoid et d'utiliser le mongo-ruby-driver directement.

-1

Essayez

update_all() 

Documentation

de MongoId Ex: Si je voulais faire tous mes utilisateurs Joe

User.update_all(name: 'Joe') 

se comportera exactement comme on peut s'y attendre.

+0

Sans rapport avec ma question. – fedenusy

+0

Pouvez-vous expliquer comment cela n'est pas lié? A moins de me tromper, update_all vous permettra de conserver les modifications apportées à n'importe quel ensemble de documents incorporés en une seule opération. – ThunderGuppy

+0

J'ai demandé de supprimer un document incorporé "sans persister". 'update_all' enregistrera les changements dans la base de données. – fedenusy

Questions connexes