9

mongo db シェルで for ループを使用するにはどうすればよいですか?

私の試みはこの時点で立ち往生しています:

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

手伝ってくれてありがとう!

4

5 に答える 5

5

MongoDB シェルは javascript エンジンを使用します。数年前の javascript で、java 内で int を使用しているため、ループ内で var キーワードを使用すると問題が発生したことを覚えています。

ループ文から var を削除してみてください

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 はデフォルトで非同期であるため、集約が完了するまで待機せず、次の反復に移動する可能性があることに注意してください。

于 2016-09-21T20:06:30.197 に答える
2

コードは次のように機能しますが、表示する結果はありません。少なくとも構文エラーではない

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}
 )
}
于 2016-09-22T06:43:54.400 に答える
1

ループが間違っています。<=6 である必要があります。このような

for (i = 0; i <= 6; i=i+0.12){
 //your logic
}
于 2016-09-21T15:09:25.880 に答える