【问题标题】:MongoDB - dont understand how to loop through collections with a cursorMongoDB - 不了解如何使用游标遍历集合
【发布时间】:2012-06-05 20:27:31
【问题描述】:
advertisers = db.dbname.find( 'my query which returns things correctly' );

我现在意识到它会将光标返回到集合列表。

但我不确定如何遍历它们并获取每个集合。

我想尝试这样的事情:

advertisers.each(function(err, advertiser) {
    console.log(advertiser);
});

但这不起作用。但我在网上搜索并没有看到如何让它真正使用简单的 JavaScript。

然后我有这个代码:

var item;

if ( advertisers != null )
{
   while(advertisers.hasNext()) 
   { 
      item = advertisers.next();
   }
}

它给出了这个错误:SyntaxError: syntax error (shell):1

非常感谢您的帮助!

谢谢!

【问题讨论】:

    标签: javascript mongodb mongoid


    【解决方案1】:

    快速而肮脏的方法是:

    var item;
    var items = db.test.find();
    while(items.hasNext()) {
       item = items.next();
       /* Do something with item */
    }
    

    还有更实用的:

    items.forEach(function(item) {
       /* do something */
    });
    

    【讨论】:

    • 谢谢..我试过了,但由于某种原因,我收到了这样的错误:Tue Jun 5 16:31:08 SyntaxError: syntax error (shell):1 Tue Jun 5 16: 31:08 未捕获的异常:错误 hasNext: false
    • @Justing 我试过了,但由于某种原因还是不行。
    • 采集测试有项目吗?我刚刚将确切的代码粘贴到 mongo shell 中,它工作了......
    • 我刚刚用我所做的错误检查更新了我的原始问题
    • 尝试准确地键入代码而不是粘贴它。你在窗户上吗?
    【解决方案2】:

    另一种遍历集合的方法是使用 toArray 游标方法:

    var results = db.getCollection('posts').find({}).toArray();
    
    for(var i = 0; i <= results.length -1; i++)
    {
        print("Author is:" + results[i].Author);
    }

    【讨论】:

      【解决方案3】:

      由于您没有显示堆栈,因此我假设您的问题是您传递给 find 函数的参数,此参数必须是 JavaScript 对象,因此:

      var query = {
          key: 'my query which returns things correctly'
      }
      
      advertisers = db.dbname.find(query);
      advertisers.each (function(err, doc){
      
          //.... error code not included.....
          console.log(doc);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-04
        • 1970-01-01
        • 2014-11-08
        • 2020-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多