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}
)
}
手伝ってくれてありがとう!
MongoDBシェルはJavaScriptエンジンを使用しており、Javaでintを使用しているため、ループ内でのvarキーワードの使用に関する問題がJavaScriptで数年前に覚えています。
ループステートメントから変数を削除してみてください
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はデフォルトで非同期であるため、集約が完了するのを待たずに次の反復に移動する場合があることに注意してください。
コードはこのように機能しますが、表示する結果はありません。少なくとも構文エラーはもうありません
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}
)
}
一度に多くのアイテムを挿入します。
for (var i = 1; i <= 25; i++) {
db.collectionName.insert({ x : i })
}
チェックする
db.collectionName.find();
私は過去に同じエラーに固執しました。完璧なコーディングスタイルのすべての行に対して、ループ内でスペース/タブを使用する必要があります。
2つ目は、nがiより大きいことです。次に、一致クエリはfoo.km <nおよびfoo.km> iのようになります。
これが最終的なコードです-
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}
)
}
ループが間違っています。6以下である必要があります。このような
for (i = 0; i <= 6; i=i+0.12){
//your logic
}