MongoDB GetCollection方法是否将整个集合加载到RAM或引用中? C#

时间:2015-02-03 12:27:08

标签: c# mongodb

我有一个处理MongoDB所有数据库函数的存储库类,这是构造函数的实现:

public LocationRepository(string connectionString)
{
    if (string.IsNullOrWhiteSpace(connectionString))
    {
        connectionString = "mongodb://localhost:27017";
    }

    _client = new MongoClient(connectionString);
    _server = _client.GetServer();
    _database = _server.GetDatabase("locDb");
    _collection = _database.GetCollection<Location>("Location");
}
然后我做了类似的事情:

_collection.Insert(locationObject)

在该课程的其他方法中。

我想知道考虑到有限的内存是否可行?如果没有,是否有一种可行的方法可以直接持久保存到DB而无需加载集合。

1 个答案:

答案 0 :(得分:4)

GetCollection无法加载集合,甚至Find()也不会。事实上,在实际从数据库加载任何之前,你必须开始迭代MongoCursor,即使这样,它也不会加载整个集合但只是批量可配置的大小。

如果你想真正加载整个集合,你可以在ToList()上调用MongoCursor,但当然这很少有意义。