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.
InformationsquelleAutor Alex Ryan | 2014-09-20
Schreibe einen Kommentar