mongodb C/C++ driver 通过帐号验证登录mongo服务器并进行相应操作
转载:http://blog.chinaunix.net/uid-29454152-id-5587541.html
1。C 语言登录mongodb,解决登录失败错误:Authentication failed.: mongoc client_authenticate error
代码如下:
点击(此处)折叠或打开
- #include <bson.h>
- #include <bcon.h>
- #include <mongoc.h>
- int main (int argc,
- char *argv[])
- {
- mongoc_client_t *client;
- mongoc_database_t *database;
- mongoc_collection_t *collection;
- bson_t *command, reply, *insert;
- bson_error_t error;
- char *str;
- bool retval;
- mongoc_init ();
- client = mongoc_client_new("mongodb://mydbUser:aaaaaa@localhost:27017/?authSource=mydb");
- database = mongoc_client_get_database (client, "mydb");
- collection = mongoc_client_get_collection (client, "mydb", "student");
- command = BCON_NEW ("ping", BCON_INT32 (1));
- retval = mongoc_client_command_simple (client, "mydbUser", command, NULL, &reply, &error);
- if (!retval) {
- fprintf (stderr, "%s\n", error.message);
- return EXIT_FAILURE;
- }
- str = bson_as_json (&reply, NULL);
- printf ("%s\n", str);
- insert = BCON_NEW ("hello", BCON_UTF8 ("world"));
- if (!mongoc_collection_insert (collection, MONGOC_INSERT_NONE, insert, NULL, &error)) {
- fprintf (stderr, "%s\n", error.message);
- }
- bson_destroy (insert);
- bson_destroy (&reply);
- bson_destroy (command);
- bson_free (str);
- mongoc_collection_destroy (collection);
- mongoc_database_destroy (database);
- mongoc_client_destroy (client);
- mongoc_cleanup ();
- return 0;
- }
代码中第18行是登录关键:
点击(此处)折叠或打开
- client = mongoc_client_new("mongodb://mydbUser:aaaaaa@localhost:27017/?authSource=mydb")
容易看出登录是已uri格式登录的,并可划分成几部分:
点击(此处)折叠或打开
- mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
开始我的登录出错是因为uri格式不对,错误提示:
点击(此处)折叠或打开
- what(): Authentication failed.: mongoc client_authenticate error
2。C++ 登录mongodb
代码如下:
点击(此处)折叠或打开
- #include <iostream>
- #include <bsoncxx/builder/stream/document.hpp>
- #include <bsoncxx/json.hpp>
- #include <mongocxx/client.hpp>
- #include <mongocxx/instance.hpp>
- int main(int, char**) {
- mongocxx::instance inst{};
- mongocxx::client conn{mongocxx::uri{"mongodb://mydbUser:aaaaaa@localhost:27017/?authSource=mydb"}};
- bsoncxx::builder::stream::document document{};
- auto collection = conn["mydb"]["student"];
- document << "hai!!!" << "world!!!";
- collection.insert_one(document.view());
- auto cursor = collection.find({});
- for (auto&& doc : cursor) {
- std::cout << bsoncxx::to_json(doc) << std::endl;
- }
- }
登录成功关键代码是第11行:
点击(此处)折叠或打开
- mongocxx::client conn{mongocxx::uri{"mongodb://mydbUser:aaaaaa@localhost:27017/?authSource=mydb"}}
说明同C 语言!!
参考链接:
C语言参考:
C语言参考2:
C++参考:(New-Driver)
登录细节参考:
登录细节参考2: http://api.mongodb.org/c/current/authentication.html