ver varios una insertar eliminar documentos documento datos crear colecciones coleccion campo mongodb node.js mongoose document-database

una - insertar varios documentos en mongodb



Eliminar una clave de un documento MongoDB utilizando Mongoose (7)

¿Podría ser un problema secundario como usar

function (user)

en lugar de

function(err, user)

para la devolución de llamada del hallazgo? Solo trato de ayudar con esto porque ya tenía el caso.

Estoy usando la Biblioteca Mongoose para acceder a MongoDB con node.js

¿Hay alguna manera de eliminar una clave de un documento ? es decir, no solo establece el valor en nulo, sino que lo elimina?

User.findOne({}, function(err, user){ //correctly sets the key to null... but it''s still present in the document user.key_to_delete = null; // doesn''t seem to have any effect delete user.key_to_delete; user.save(); });


El documento de Mangosta NO es un objeto simple de javascript y es por eso que no se puede usar el operador de eliminación. (O unset de la biblioteca ''lodash'').

Sus opciones son establecer doc.path = null || undefined o para usar el método Document.toObject () para convertir mongoose doc en objeto simple y desde allí usarlo como de costumbre. Lea más en la api-ref de mongoose: http://mongoosejs.com/docs/api.html#document_Document-toObject

El ejemplo se vería así:

User.findById(id, function(err, user) { if (err) return next(err); let userObject = user.toObject(); // userObject is plain object });


En la sintaxis de mongo para eliminar alguna clave, debes hacer lo siguiente:

{ $unset : { field : 1} }

Parece en Mongoose lo mismo.

Editar

Verifique this ejemplo.


En las primeras versiones, habría necesitado desplegar el controlador node-mongodb-native. Cada modelo tiene un objeto de colección que contiene todos los métodos que ofrece node-mongodb-native. Entonces puedes hacer la acción en cuestión con esto:

User.collection.update({_id: user._id}, {$unset: {field: 1 }});

Desde la versión 2.0 puedes hacer:

User.update({_id: user._id}, {$unset: {field: 1 }}, callback);

Y desde la versión 2.4, si ya tiene una instancia de un modelo, puede hacerlo:

doc.field = undefined; doc.save(callback);


Querrás hacer esto:

User.findOne({}, function(err, user){ user.key_to_delete = undefined; user.save(); });


Uso mangosta y el uso de cualquiera de las funciones anteriores me hizo el requerimiento. La función compila sin errores pero el campo aún permanecerá.

user.set(''key_to_delete'', undefined, {strict: false} );

hizo el truco para mí


puede usar delete user._doc.key