¿Cómo eliminar sólo uno o dos campos de los documentos en mongodb?
-
21-12-2019 - |
Pregunta
Esta es una pregunta muy fácil, simplemente tener un congelamiento cerebral muy fuerte.En mi agregación, solo quiero eliminar el campo '_id' usando $project
pero devuelve todo lo demás.Sin embargo, estoy consiguiendo
$projection requiere al menos un campo de salida
Yo pensaría que es como:
db.coll.aggregate( [ { $match .... }, { $project: { _id: 0 }}])
Solución
Debe incluir campos explícitamente cuando utilice la agregación, ya sea a través de varias operaciones de canalización o mediante $project
.Actualmente no existe una manera de devolver todos los campos a menos que se definan explícitamente por el nombre del campo:
$project : {
_id : 0,
"Name" : 1,
"Address" : 1
}
Puedes excluir el _id
utilizando la técnica que utilizó y como se muestra arriba.
Otros consejos
de v4.2 , puede hacer uso de Operador agregado $unset
para eliminar campos individuales o múltiples.También puede excluir un campo o campos desde un documento incrustado usando la notación de puntos.
para eliminar un solo campo:
db.coll.aggregate([ { $unset: "_id" } ])
Para eliminar múltiples campos:
db.coll.aggregate([ { $unset: [ "_id" ] } ])
para eliminar los campos incrustados:
db.coll.aggregate([
{ $unset: [ "_id", "author.name" ] }
])