2016-04-12 7 views
0

Ich bin mit mongoimportcsv-mongodb zu importieren. Aufgrund csv kann ich den Feldtyp nicht angeben, 0 wird als int betrachtet, aber ich brauche es ein Doppel sein. Also habe ich versucht, eine JavaScript-Datei zu schreiben, die convert zu tun:Änderung mongodb Feldtyp von int zu verdoppeln

db.col.find().forEach(function(obj) { obj.n = new double(obj.n); db.col.save(obj); }) 

Aber es Fehler melden:

Cannot use 'commands' readMode, degrading to 'legacy' mode 
2016-04-12T17:08:15.286+0800 E QUERY [thread1] ReferenceError: double is not 
defined : 
@(shell):1:41 
[email protected]/mongo/shell/query.js:477:1 
@(shell):1:1 

ich versucht habe Double, NumberDouble und numberDouble keiner von ihnen arbeiten.

+0

können Sie versuchen, 'obj.n = + obj.n || 0' – kiro112

+0

@ Kiro112 nicht funktionieren, geben Sie immer noch Int32 – jean

+0

versuchen Sie mit 'ParseFloat()' anstelle von + – kiro112

Antwort

0

Versuch verwenden

db .col 
    .find() 
    .forEach(function(obj) { 
     obj.n = parseFloat(obj.n) || 0; 
     db.col.save(obj); 
    }); 
+0

nicht funktionieren. Ich erinnere mich, wenn der Wert unverändert ist, wird die $ set nicht funktionieren – jean

+0

@jean versuchen Sie die Bearbeitung. Arbeiten an Mongo 3.0.11 – kiro112

+0

funktionieren nicht. Ich versuche es sogar: obj.n = Zahl (0.0); immer noch Int32 – jean