gpt4 book ai didi

c - 如何获取 MongoDB 服务器上的数据库和集合列表?

转载 作者:可可西里 更新时间:2023-11-01 09:23:43 25 4
gpt4 key购买 nike

我正在用 C 为 MongoDB 编写一个 GUI 客户端。我使用 C driver for MongoDB .我想获取数据库及其集合的列表,但在 documentation 中找不到任何函数这样做。

如何使用 C 驱动程序获取数据库和集合的列表?

最佳答案

这里的其他答案似乎只完成了一半,或者甚至与 C/C++ 接口(interface)无关。看了很多之后,这是对我有用的:

string serverHost("127.0.0.1:27017");
mongo::DBClientConnection conn;
string errmsg;
if( conn.connect( serverHost, errmsg ) )
{
BSONObj cmd = mongo::fromjson( "{listDatabases: 1}" );
BSONObj info;
if( conn.runCommand( "admin", cmd, info ) )
{
BSONElement arrayel = info.getField("databases");
std::vector<BSONElement> mdArray = arrayel.Array();
std::vector<BSONElement>::iterator iter;
for( iter=mdArray.begin(); iter!=mdArray.end(); ++iter )
{
BSONElement element = *iter;
BSONObj obj = element.Obj();

// HERE IS THE DATABASE NAME
string dbname = obj.getStringField("name");

// HERE IS THE LIST OF COLLECTIONS, BUT MAY NEED TO IGNORE ONE
// TITLED "system.indexes"
list<string> collNamespaces =
conn.getCollectionNames(dbname);

list<string>::iterator iter2 = collNamespaces.begin();
while( iter2 != collNamespaces.end() )
{
// EACH ENTRY HAS THE FULL NAMESPACE ("database:collection").
// Use this method to strip off the database name
string collectionName = mongo::nsGetCollection(*iter2);

++iter2;
} // END WHILE iterate through collections
} // END WHILE iterate through databases
} // END IF runCommand() returned success
} // END IF database connected

关于c - 如何获取 MongoDB 服务器上的数据库和集合列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8286994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com