¿Cómo puedo utilizar un bucle for en el mongo db shell?

Mis intentos son stucking en este punto:

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}
)
}

Gracias por la ayuda!

¿Qué es lo que quieres hacer?
Su condición de bucle es false incluso en la primera iteración del bucle.
La condición es falsa, i necesitan ser <= 6
También, una vez que el bucle es fijo, yo creo que usted quiere intercambiar las variables utilizadas para $gt y $lt como n es mayor que i.
OK. he cambiado a <=6. Pero aún así, algo está mal

OriginalEl autor albert | 2016-09-21

5 Comentarios

  1. 2

    MongoDB shell utiliza el motor de javascript y recuerdo que en javascript algunos años algún problema con el uso de la palabra clave var dentro de un bucle como utilizamos int dentro de java.

    tratar mediante la eliminación de var de instrucción loop

    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}
     ])
    }

    También ser conscientes de que js es asincrónica por defecto, así que no podría esperar para agregado para completar y podría moverse a la siguiente iteración.

    todavía tengo este Error: Error: Línea 6: testigo Inesperado }
    En un segundo aspecto parece como agregado argumento debe estar en el interior de la matriz, he actualizado la respuesta.
    Rahul Kumar, sírvanse explicar qué entiende por JS ser asincrónicos de forma predeterminada. Dudo mucho que.
    A lo que me refería en el término simple es que En JS no va a esperar para cualquier llamada de e/S para ser completado y que iba a saltar en la línea siguiente de la ejecución, es por eso que hemos devoluciones de llamada en js.

    OriginalEl autor Rahul Kumar

  2. 1

    Su circuito está mal, debería ser <=6. Como este

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

    OriginalEl autor Siraj Hussain

  3. 1

    Funciona el código como este, pero no hay resultados para mostrar. Al menos no es un error de sintaxis anymmore

    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}
     )
    }

    OriginalEl autor albert

  4. 0

    Me quedé en el mismo error que en el pasado. Debemos utilizar espacios o tabuladores en bucle para cada línea perfecta con el estilo de codificación.

    2ª cosa es que aquí n es mayor que yo. A continuación, coincide con la consulta debe como foo.km < n y foo.km > yo

    Entonces, este es el código final –

    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}
        )
    }

    OriginalEl autor Arpit

  5. 0

    Insertar el número de elemento a la vez.

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

    Para comprobar

    db.collectionName.find();

    OriginalEl autor Ahmad Sharif

Dejar respuesta

Please enter your comment!
Please enter your name here