mongodb C/C++ driver 通过帐号验证登录mongo服务器并进行相应操作
2016-01-12 13:03
597 查看
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语言参考:http://api.mongodb.org/c/1.2.0/tutorial.html#connectingC语言参考2:http://api.mongodb.org/c/1.2.0/
C++参考:https://github.com/mongodb/mongo-cxx-driver/wiki/Quickstart-Guide-(New-Driver)
登录细节参考:https://docs.mongodb.org/manual/reference/connection-string/
登录细节参考2: http://api.mongodb.org/c/current/authentication.html
相关文章推荐
- mongodb 建库过程(ubuntu shell 版)
- 第五次实验:借助mongopi在树莓派上安装MongoDB(2.1.1)
- MongoDB常用操作一查询find方法db.collection_name.find()
- 基于C#的MongoDB数据库开发应用(3)--MongoDB数据库的C#开发之异步接口
- MongoDB学习笔记(一) MongoDB介绍及安装
- MongoDB里做表间关联
- MongoDB安装、管理工具、操作
- mongodb3.2 安装配置
- python操作mongoDB的时候遇到问题,find()结果无法保存
- 全文检索引擎Solr系列——整合MySQL、MongoDB
- MongoDB安装过程记录。
- 前端菜鸡之路——mongoDB安装
- 使用C#代码为MongoDB添加2D索引
- NoSQL 之 Morphia 操作 MongoDB
- mongoDB 查询操作
- linux(ubuntu)安装mongodb的命令
- MongoDB查询命令具体解释
- mongoDB性能篇——mongoDB数据库索引
- mongoDB应用篇——固定集合和GridFS文件
- mongoDB基础篇——NoSQL特性及MongoDB数据查询