Considerando una sencilla estructura del documento mongo:mongodb: upserting: valor sólo se establece si el documento está siendo insertado
{_id, firstTime, LastTime}
El cliente tiene que insertar un documento con una identificación conocida, o actualizar un documento existente. El 'último tiempo' siempre debe establecerse en algún momento posterior. Para el 'firstTime', si se está insertando un documento, entonces el 'firstTime' debe establecerse en la hora actual. Sin embargo, si el documento ya está creado, entonces 'firstTime' no se modificará. Me gustaría hacerlo puramente con posturas (para evitar búsquedas).
He rastreado el http://www.mongodb.org/display/DOCS/Updating, pero simplemente no veo cómo se puede hacer esa operación en particular.
No creo que esto sea algo irrazonable, hay operaciones $ push y $ addToSet que efectivamente hacen eso en campos de matriz, simplemente nada que haga lo mismo en campos simples. Es como debería haber algo como $ setSi operación.
* si el documento ya está creado, el campo debe permanecer sin cambios * no se llama upsert (como en su título) –
@ om-nom-nom He esbozado el caso más simple, he actualizado el descripción, por lo que hay un campo que siempre se está actualizando. –
Parece que esta característica está dirigida a 2.4: https://jira.mongodb.org/browse/SERVER-340 – JohnnyHK