如何在mongo db shell中使用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}
)
}
感谢您的帮助!
答案 0 :(得分:2)
MongoDB shell使用javascript引擎,我记得在一年前的javascript中使用var关键字里面的一些问题,因为我们在java中使用int。
尝试从循环语句中删除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是异步的,因此它可能不会等待聚合完成并可能转移到下一次迭代。
答案 1 :(得分:1)
您的循环错误,应该是&lt; = 6。喜欢这个
for (i = 0; i <= 6; i=i+0.12){
//your logic
}
答案 2 :(得分:1)
代码的工作原理如下,但没有结果显示。至少没有语法错误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}
)
}
答案 3 :(得分:0)
过去我坚持同样的错误。对于具有完美编码风格的每一行,我们应该在循环中使用空格/制表符。
第二件事在这里n比我大。然后匹配查询应该像foo.km&lt; n和foo.km&gt;我
所以,这是最终代码 -
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}
)
}
答案 4 :(得分:0)
一次插入许多项目。
for (var i = 1; i <= 25; i++) {
db.collectionName.insert({ x : i })
}
要检查
db.collectionName.find();