有一个很棒的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())
但我发现这个唯一的声明没有任何信息提示完全没用。它只是一个字母的总和而已。
修改
我找到了一个解决方案,我将在下面发布。
答案 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);
}