Ich habe eine Sammlung von Dokumenten über Entitäten, die status
Eigenschaft haben, die 1
oder 0
sein könnte. Jedes Dokument enthält viele Daten und belegt Platz. Ich möchte die meisten Daten auf den Dokumenten mit status
gleich 0
loswerden.Wie kann ich alle Dokumenteigenschaften außer einem oder zwei in mongodb aufheben?
Also, ich möchte jedes Dokument in der Sammlung, die wie
{
_id: 234,
myCode: 101,
name: "sfsdf",
status: 0,
and: 23243423.1,
a: "dsf",
lot: 3234,
more: "efsfs",
properties: "sdfsd"
}
... zu viel kleiner
{
_id: 234,
mycode: 101,
status: 0
}
So kann ich tun, im Grunde sieht
db.getCollection('docs').update(
{'statusCode': 0},
{
$unset: {
and: "",
a: "",
lot: "",
more: "",
properties: ""
}
},
{multi:true}
)
Aber es gibt ungefähr 40 Eigenschaften, die eine riesige Liste wären, und ich bin auch nicht sicher, dass alle Objekte dem gleichen Schema folgen.
Gibt es eine Möglichkeit, alle außer zwei Eigenschaften zu deaktivieren?
Sie sollten nur überschreiben statt unset. So etwas wie 'db.getCollection ('docs').update ( { 'status': 0}, { _id: 234, mycode: 101, Status: 0 } ) 'und Bulk-Schreib verwenden. – Veeram
Ich dachte daran, aber das sind zwei Fehler: 1. Überschreiben funktioniert nicht mit Multi-Parameter. 2. Ich muss die '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ## –
Tut mir leid, ich habe meinen Kommentar noch aktualisiert. Nochmal Überprüfen. – Veeram