如何在mongodb shell中使用for循环?

时间:2016-09-21 15:02:21

标签: mongodb mongodb-query aggregation-framework mongo-shell mongodb-aggregation

如何在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}
)
}

感谢您的帮助!

5 个答案:

答案 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();