wake-up-neo.net

Wie verwende ich eine for-Schleife in der Mongodb-Shell?

Wie kann ich eine for-Schleife in der Mongo-Db-Shell verwenden?

Meine Versuche halten an diesem Punkt fest:

for (var i = 0; i <= 6; i=i+0.12){
var n = i + 0.12;
db.test.aggregate(
    { $sort: {'deviation': -1}},
    { $unwind: '$foo' },
    { $match: { 'foo.km': {$gt: {n}, $lt: {i}}}},
    { $limit: 1}
)
}

Danke für die Hilfe!

6
albert

MongoDB Shell verwendet Javascript Engine und ich erinnere mich an Javascript vor einigen Jahren einige Probleme mit der Verwendung von var Schlüsselwörtern innerhalb der Schleife, wie wir int in Java verwenden.

versuchen Sie es, indem Sie var aus der Schleifenanweisung entfernen

for (i = 0; i <= 6; i=i+0.12){ 
  var n = i + 0.12;
 db.test.aggregate([
  { $sort: {'deviation': -1}},
  { $unwind: '$foo' },
  { $match: { 'foo.km': {$gt: {n}, $lt: {i}}}},
  { $limit: 1}
 ])
}

Denken Sie auch daran, dass js standardmäßig asynchron ist. Daher kann es nicht warten, bis das Aggregat abgeschlossen ist, und es kann zur nächsten Iteration übergehen.

3
Rahul Kumar

Der Code funktioniert so, aber es sind keine Ergebnisse zu zeigen. Zumindest kein Syntaxfehler mehr

for (i = 0; i <= 6; i=i+0.12){ 
  var n = i + 0.12;
 db.test.aggregate(
  { $sort: {'deviation': -1}},
  { $unwind: '$foo' },
  { $match: { 'foo.km': {$gt: [n], $lt: [i]}}},
  { $limit: 1}
 )
}
1
albert

Ihre Schleife ist falsch, es sollte <= 6 sein. So was

for (i = 0; i <= 6; i=i+0.12){
 //your logic
}
1
Siraj Hussain

Legen Sie viele Elemente gleichzeitig ein.

for (var i = 1; i <= 25; i++) {
   db.collectionName.insert({ x : i })
}

Überprüfen 

db.collectionName.find();
0
Ahmad Sharif

Ich habe an demselben Fehler in der Vergangenheit festgehalten. Wir sollten Leerzeichen/Tabulatoren in der Schleife für jede Zeile mit perfektem Codierstil verwenden.

2. was ist hier n ist größer als ich. Dann sollte die Match-Abfrage foo.km <n und foo.km> i sein

Das ist also der endgültige Code -

for (var i = 0; i <= 6; i=i+0.12){
    var n = i + 0.12;
    db.test.aggregate(
        { $sort: {'deviation': -1}},
        { $unwind: '$foo' },
        { $match: { 'foo.km': {$lt: {n}, $gt: {i}}}},
        { $limit: 1}
    )
}
0
Arpit