2015-06-17 61 views
2

我一直有这个错误,因为我试图从集合中检索数千个文档。MongoDB。索引超出范围

index was out of range. must be non-negative and less than the size of the collection. parameter : Index 

这里是我的代码,我查询文件:

 MongoCollection<Book> collection = PDatabase.GetCollection<Book>("books"); 
     List<IProduct> products = new List<IProduct>(); 
     var books = collection.Find(Query.GT("stock", 0)).SetFlags(QueryFlags.NoCursorTimeout); 
     foreach (var book in books) 
     { 
      try 
      { 
       products.Add(book); 
      } 
      catch (Exception ex) { Console.WriteLine(ex.Message); } 
     } 
     return products; 

正如我看了看异常消息,它说:“指数超出范围必须为非负且小于。参数:索引“

+0

'collection.Find'返回什么? –

+0

我有一个'书'类,我用它来初始化MongoCollection。所以.find会返回一个'Book'列表。 'Book'实现我的'IProduct'接口 –

+0

'PDatabase.GetCollection (“books”)'回调什么?显然'products'在上下文中无效 –

回答

0

您在评论中提到底层问题是OutOfMemoryException。

这里的答案建议寻呼最佳实践MongoDB - paging

+0

我不使用分页。我敢打赌,这个错误大概是列表,因为我的文档超过了600万,这个数字是几百万。 –

+0

我建议分页可能会使您受益。无论如何,你希望对600万份文件做什么? – obaylis

+0

谢谢,我用skip和limit来解决它。这样,并非所有文档都加载到一个查询中。 –