Come rimuovere solo uno o due campi dai documenti in MongoDB?
-
21-12-2019 - |
Domanda
Questa è una domanda molto facile, solo con un congelamento del cervello davvero brutto.Nella mia aggregazione, voglio solo rimuovere il campo '_ID' usando $project
ma restituire tutto il resto.Tuttavia, sto ottenendo
.$ Proiezione richiede almeno un campo di uscita
Penserei che sia come:
db.coll.aggregate( [ { $match .... }, { $project: { _id: 0 }}])
. Soluzione
È necessario includere esplicitamente i campi quando si utilizza l'aggregazione tramite varie operazioni di conduttura o tramite $project
.Non è attualmente un modo per restituire tutti i campi se non definiti esplicitamente definiti dal nome del campo:
$project : {
_id : 0,
"Name" : 1,
"Address" : 1
}
.
È possibile escludere il _id
utilizzando la tecnica che hai usato e come mostrato sopra.
Altri suggerimenti
Dalla V4.2 , è possibile utilizzare $unset
Operatore aggregato per rimuovere campi singoli o multipli.È inoltre possibile escludere un campo o campi da un documento incorporato utilizzando la notazione DOT.
Per rimuovere un singolo campo:
db.coll.aggregate([ { $unset: "_id" } ])
.
Per rimuovere più campi:
db.coll.aggregate([ { $unset: [ "_id" ] } ])
.
Per rimuovere i campi Embedded:
db.coll.aggregate([
{ $unset: [ "_id", "author.name" ] }
])
.