Considérant une structure simple document mongo:MongoDB: upserting: valeur que définir si le document est inséré
{_id, firstTime, lastTime}
Le client a besoin d'insérer un document avec une pièce d'identité connue, ou mettre à jour un document existant. Le paramètre 'lastTime' doit toujours être défini sur une date limite. Pour le 'firstTime', si un document est inséré, le 'firstTime' doit être réglé sur l'heure actuelle. Cependant, si le document est déjà créé, 'firstTime' reste inchangé. Je voudrais le faire purement avec upserts (pour éviter les recherches).
J'ai exploré le http://www.mongodb.org/display/DOCS/Updating, mais je ne vois pas comment cette opération particulière peut être effectuée.
Je ne crois pas que ce soit quelque chose de déraisonnable, il ya des opérations $ push et $ addToSet qui le font effectivement sur les champs de tableau, rien de ce qui ferait la même chose sur des champs simples. C'est comme s'il devait y avoir quelque chose comme l'opération $ setIf.
* si le document est déjà créé, le champ doit rester inchangé * il ne s'appelle pas upsert (comme dans votre titre) –
@ om-nom-nom J'ai décrit le cas le plus simple, j'ai mis à jour le description, il y a donc un champ qui est toujours mis à jour. –
On dirait que cette fonctionnalité est ciblée pour 2.4: https://jira.mongodb.org/browse/SERVER-340 – JohnnyHK