So ändern Sie eine mongodb Art von Doppel-oder Integer zu String?
Ich verwendet mongoimport zu importieren, csv-Daten in mongodb.
Es überwiegend Arten korrekt, aber es gibt ein paar Fälle, in denen Doppel-oder Ganzzahlen erstellt wurden, wo die Saiten sind erwünscht.
Ich habe versucht verschiedene Techniken zu konvertieren Sie diese Felder, um Zeichenketten ohne Erfolg.
Hier ist was ich versucht habe:
Dieses erzeugt eine unerwünschte änderung an einem Objekt (type=3):
db.temp.find( { 'name' : { $type : 16 } } ).forEach( function (x) {
x.name = new String(x.name); //convert field to string
db.temp.save(x);
});
Ergebnis sah so aus:
> db.temp.findOne({name: {$type:3}})
{
"_id" : ObjectId("541a28ddbf8a2e3ee8439b58"),
"name" : {
"0" : "0",
"1" : ".",
"2" : "2",
"3" : "2"
}
}
Diese produziert keine änderung:
db.temp.find({name: {$exists:true}}).forEach( function(x) {
x.name = "" + x.name;
});
Diese produziert keine änderung:
db.temp.find({name: {$exists:true}}).forEach( function(x) {
x.name = x.name + "";
});
Diese produziert keine änderung:
db.temp.find({name: {$exists:true}}).forEach( function(x) {
x.name = "" + x.name + "";
});
Diese produziert keine änderung:
db.temp.find({name: {$exists:true}}).forEach( function(x) {
x.name = x.name.toString();
});
Dieser erzeugt einen Fehler: TypeError: Object 0.22 hat keine Methode 'toNumber'
db.temp.find({name: {$exists:true}}).forEach( function(x) {
x.name = x.name.toNumber().toString();
});
- Diese Frage wurde vorher gefragt. Werfen Sie einen Blick auf die Antwort für diese
question
- Danke. Ich hatte schon gelesen über diese Antworten auf diese Frage und einige andere. Seltsam, der top 2-Antworten auf die Frage, die Sie erwähnt scheinen nicht zu funktionieren. Wie angegeben, ist die top-Antwort konvertiert der Typ, Objekt (Typ=3) anstatt ein String (type=2). Die zweitbeliebteste Antwort, machte überhaupt keine Veränderung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, speichern Sie die konvertierten Daten, die Sie benötigen, um
update
Dokument, sonst wird das geänderte Dokument gilt, nicht, wo.Als der
toNumber
Problem, es ist nicht eine build-in Funktion. Sie verwenden möchten, könnenparseInt
oderparseFloat
statt:Konvertieren von Int auf str:
Versuchte ich mit dieser Abfrage. Es war für mich arbeiten.
Ich denke, es ist die Unterstützung bis zum mongodb 3.4. In die Letzte könnte man jetzt arbeiten.