Ich habe versucht, etwas Ähnliches zu tun, aber stattdessen entfernen Sie die Spalte aus einem eingebetteten Dokument. Ich habe eine Weile gebraucht, um eine Lösung zu finden, und dies war der erste Beitrag, auf den ich gestoßen bin, also dachte ich, ich würde das hier für alle anderen posten, die dasselbe versuchen.
Nehmen wir also an, Ihre Daten sehen wie folgt aus:
{
name: 'book',
tags: [
{
words: ['abc','123'],
lat: 33,
long: 22
}, {
words: ['def','456'],
lat: 44,
long: 33
}
]
}
So entfernen Sie die Spalte words
aus dem eingebetteten Dokument zu entfernen, gehen Sie folgendermaßen vor:
db.example.update(
{'tags': {'$exists': true}},
{ $unset: {'tags.$[].words': 1}},
{multi: true}
)
oder über die updateMany
db.example.updateMany(
{'tags': {'$exists': true}},
{ $unset: {'tags.$[].words': 1}}
)
En $unset
nur bearbeiten, wenn der Wert vorhanden ist, aber es wird keine sichere Navigation durchgeführt (es wird nicht geprüft, ob tags
exists first), so dass das exists für das eingebettete Dokument benötigt wird.
Dabei wird die alle positionalen Operatoren ( $[]
), die in Version 3.6 eingeführt wurde