如何使用C ++获取MongoDb中的所有集合名称

时间:2015-08-05 19:13:41

标签: c++ mongodb driver

有一个很棒的MongoDb C++ Driver。唯一能让像我这样的新手难以使用它的原因是缺乏一些极少的例子。例如,我知道有一个名为getCollectionNames的方法,但我不确定如何使用它。在Python我会这样做:

db = MongoClient(host, port)[db_name]
colls = db.collection_names()

我已经完成了。但我对C++感到不舒服,并且无法弄清楚如何将文档中的原始函数声明转换为某些工作代码。

所以,这就是我现在所做的,并且看到它有效:

ConnectionString cs = ConnectionString::parse(uri, errmsg);
DBClientBase * conn(cs.connect(errmsg));

现在我想更进一步,获取所有集合名称。请提出一些建议。

修改

好吧,我在dbclientinterface.h的某个地方找到了一个名为getCollectionNames的方法。它定义如下:

std::list<std::string> getCollectionNames( const std::string& db,
                                           const BSON& filter = BSONObj())

但我发现这个唯一的声明没有任何信息提示完全没用。它只是一个字母的总和而已。

修改

我找到了一个解决方案,我将在下面发布。

1 个答案:

答案 0 :(得分:1)

这是解决方案:

std::string uri = "mongodb://127.0.0.1:27017/mydb";
std::string errmsg;
ConnectionString cs = ConnectionString::parse(uri, errmsg);
DBClientBase * conn(cs.connect(errmsg));
std::list<std::string> colls = conn->getCollectionNames("mydb");
for(std::list<std::string>::iterator it = colls.begin();it != colls.end();++it){
     do_something(*it);
}