3

Как я могу использовать цикл for в оболочке mongo db?Как использовать цикл for в оболочке mongodb?

Мои attemps являются прилипаемость на данный момент:

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

Спасибо за помощь!

+0

Что это такое, что вы хотите сделать? – chridam

+0

Ваше условие цикла «false» даже на первой итерации цикла. – Phylogenesis

+0

Условие ложно, 'i' должно быть <= 6 –

ответ

1

Ваша петля неправильная, она должна быть < = 6. Как это

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

MongoDB оболочка использует двигатель яваскрипта, и я помню, в JavaScript некоторого года назад некоторые проблемы с помощью уага ключевого слова внутри цикла, как мы используем Int внутри Java.

попытка путем удаления вар из заявления

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

петли также иметь в виду, что Js является асинхронным по умолчанию, поэтому он не может ждать, пока агрегат для завершения и может перейти к следующей итерации.

+0

все еще есть эта ошибка: Ошибка: строка 6: Неожиданный токен} – albert

+0

На втором взгляде кажется, что агрегированный аргумент должен быть внутри массива, I обновил ответ. –

0

Код работает так, но результатов не найдено. По крайней мере, не синтаксическая ошибка 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} 
) 
} 
0

Я застрял на той же ошибке в прошлом. Мы должны использовать пробелы/табы в цикле для каждой строки с идеальным стилем кодирования.

2-я вещь здесь n больше i. Тогда сопрягать запрос хотел foo.km < п и foo.km> я

Таким образом, это окончательный код -

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