Ich benutzte Mongoimport, um einige CSV-Daten in mongodb zu importieren.Wie ändere ich einen Mongodb-Typ von Double oder Integer in String?
Es hat hauptsächlich Typen korrekt erstellt, aber es gibt einige Instanzen, in denen Double oder Integer erstellt wurden, in denen Strings gewünscht werden.
Ich habe mehrere Techniken ausprobiert, um diese Felder in Zeichenfolgen ohne Erfolg zu konvertieren.
Hier ist, was ich versucht habe:
Dies zu einem Objekttyp eine unerwünschte Änderung erzeugt (Typ = 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 wie folgt aus:
> db.temp.findOne({name: {$type:3}})
{
"_id" : ObjectId("541a28ddbf8a2e3ee8439b58"),
"name" : {
"0" : "0",
"1" : ".",
"2" : "2",
"3" : "2"
}
}
Dies erzeugt keine Änderung:
db.temp.find({name: {$exists:true}}).forEach(function(x) {
x.name = "" + x.name;
});
Diese keine Änderung produziert:
db.temp.find({name: {$exists:true}}).forEach(function(x) {
x.name = x.name + "";
});
Diese keine Änderung produziert:
db.temp.find({name: {$exists:true}}).forEach(function(x) {
x.name = "" + x.name + "";
});
Diese keine Änderung produziert:
db.temp.find({name: {$exists:true}}).forEach(function(x) {
x.name = x.name.toString();
});
dies ein Fehler erzeugt: Typeerror: Object 0,22 hat kein Verfahren 'toNumber'
db.temp.find({name: {$exists:true}}).forEach(function(x) {
x.name = x.name.toNumber().toString();
});
Diese Frage wurde zuvor gestellt. Werfen Sie einen Blick auf die Antwort für diese ['Frage '] (http://stackoverflow.com/questions/4973095/mongodb-how-to-change-the-type-of-a-field) –
Danke. Ich hatte diese Antworten auf diese Frage und einige andere bereits gelesen. Seltsamerweise scheinen die obersten 2 Antworten für die Frage, die Sie erwähnten, nicht wirklich zu funktionieren. Wie angegeben, konvertierte die oberste Antwort den Typ in Object (Typ = 3) anstelle von String (Typ = 2). Die zweitbeliebteste Antwort änderte nichts. –