嵌入式linux mongodb,小白在Ubuntu安装mongoDB与mongo-c-driver

目的:

本人从事嵌入式软件,项目中需要使用MongoDB,最终需要熟悉c-driver的API,小白在搭建环境有些浪费时间,故写这文章让与我同样状态的开发人员学习学习。

在Ubuntu上的安装mongodb

方法一:sudo apt-get  install mongodb-server

测试是否安装成功:

1.运行mongoDB服务命令(需要使用root权限):mongod

如有下输出说明已经运行:

68891cd2c8a154c148a2ee3b1028027b.png

2.Mongodb后台管理Shell(root下):mongo

14912799e19b05c8970a54710d8b024b.png

有如下现象是正常工作:

方法二:官网下载对应位数的安装包。

下载地址:https://www.mongodb.com/download-center#community

我使用的32为Ubuntu,所以下载的包为3.3.3版本。关于版本编号自行百度。

下载安装包:mongodb-Linux-i686-3.0.1.tgz

解压:tar zxvf mongodb-linux-i686-3.0.1.tgz

mv  mongodb-linux-i686-3.0.1/ /usr/local/mongodb   # 将解压包拷贝到指定目录

MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到PATH 路径中:

export PATH=/bin:$PATH

为你 MongoDB 的安装路径。如本文的 /usr/local/mongodb

建议将其写入开机启动脚本:~/.bashrc中。

创建数据库目录

MongoDB的数据存储在data目录的db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。

以下实例中我们将data目录创建于根目录下(/)。

注意:/data/db 是 MongoDB 默认的启动的数据库路径(--dbpath)。

mkdir -p /data/db

现在我们只需要找到/usr/local/mongodb/bin目录下的:mongod与mongo,和上面的操作运行一样。

注意:

1.大概解释一下bin中文件:

mongod:暂且理解为服务器

mongo:暂且理解为可以输入命令的客户端。

mongodimport:导入数据

mongoexport:导出数据

网上教程还有使用一些参数设置

mongod --port 27017(默认)--dbpath /data/db  --logpath /……….(不了解)

2.在后台shell测试命令(mydb和mycoll是我自己创建的,刚刚安装是没有的,刚安装可能只有local):

show  dbs  ----》 查看已经存在的数据:

653bb9f09cb23132f382df8555cdd89e.png

use mydb  ---》使用mydb数据库,查看里面有几个集合:

66336d214b8a2be6dbf1994fb17efed6.png

db.mycoll.find()  ----->查看mycoll这个集合中的文档:

2af64da8c8b7e6fc0e76219e04c2eb29.png

安装mongo-c-driver

预安装

需要先安装依赖库OpenSSL,来建立ssl连接到MongoDB

RedHat / Fedora系统:

$ sudo yum install pkg-config openssl-devel cyrus-sasl-devel

Debian / Ubuntu系统:

$ sudo apt-get install pkg-config libssl-dev libsasl2-dev

FreeBSD系统:

$ su -c 'pkg install pkgconf openssl cyrus-sasl2'

这里下载的MongoDB的C语言驱动是 mongo-c-driver-1.3.5.tar.gz。

解压后打开mongo-c-driver-1.3.5目录下的 README 文件,按其中讲的方法安装,如下:

# tar xzf  mongo-c-driver-1.3.5.tar.gz

# cd mongo-c-driver-1.3.5

# ./configure

# make

# sudo make install

注意:有可能在安装的时候有error,目前我测试在seeing虚拟机安装失败,在我自己的虚拟机安装成功。安装失败可能原因:版本不懂。

官方参考链接:

http://mongoc.org/libmongoc/1.6.2/index.html

7c067bd1171ac9353f62c90871d45641.png

编写连接MongoDB的程序 test.c

/*

* 创建连接

创建一个数据库  mydb

创建一个集合  mycoll

**

**/

#include

#include

#include

int main (int   argc, charchar *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;

/*

* Required to initialize libmongoc's internals

*/

mongoc_init();

/*

* Create a new client instance

*/

client = mongoc_client_new ("mongodb://localhost:27017");

/*

* Register the application name so we can track it in the profile logs

* on the server. This can also be done from the URI (see other examples).

*/

//mongoc_client_set_appname (client, "connect-example");

/*

创建一个集合db_name  集合中的表叫coll_name(暂且这样叫吧)

* Get a handle on the database "mydb" and collection "mycoll"

*/

database = mongoc_client_get_database (client, "mydb");//获取或者创建数据库的名称

collection = mongoc_client_get_collection (client, "mydb", "mycoll"); //在这个db_name中获取或者创建一个cioll_name的集合

/*

* Do work. This example pings the database, prints the result as JSON and

* performs an insert

*/

command = BCON_NEW ("ping", BCON_INT32(1));//如何连接ping通了,就执行插入操作。

retval = mongoc_client_command_simple (client, "admin", command, NULL, &reply, &error);

if (!retval) {

fprintf (stderr, "%s\n", error.message);

return EXIT_FAILURE;

}

str = bson_as_json (&reply, NULL);

//printf ("line %d\n", __LINE__);

printf ("%s\n", str);

//printf ("line %d\n", __LINE__);

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);

/*

* Release our handles and clean up libmongoc

*/

mongoc_collection_destroy (collection);

mongoc_database_destroy (database);

mongoc_client_destroy (client);

mongoc_cleanup ();

return 0;

}

编译test.c

# gcc -o test test.c -I/usr/local/include/libmongoc-1.0-I/usr/local/include/libbson-1.0/ -lmongoc-1.0 -lbson-1.0

如果在运行的时候报错找不到动态链接库,需要检查一下是否安装正确。

正常安装的话会有以下库:libbson.so------>mongodb解析的数据为bson数据,类似json。

其中libbson是附带的捆绑的库,系统若无,脚本会自动安装。

44848b36133cc957eee3eb72d21c1adb.png

如果运行成功输出:{ "ok" : 1 }

在shell后台使用以上命令:(我们这创建了一个mydb数据库,在这个数据库中添加了一个集合,在这个集合添加一条文档 hello:“world”)

查看mongo-c-driver官方API使用

官方参考链接:http://mongoc.org/libmongoc/1.6.2/api.html

在运行代码之后,需要在后台shell查看是否有增添改查。之后还会更详细的讲解增删改查的api使用。个人感觉官方给的例子没有解释代码意思,需要查看文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

湘潭大学-软件工程-选择判断题复习

说明 期末考试单选题和判断题占30分,单选20,判断10分 单选题 选错误的 B依靠松散组合的互联网大众是无法开发出高质量软件产品的 D、所有命名都应尽量使用缩写 C、采用团队的组织方式 D、软件需求一旦确定就不允许变化 以下哪一项是通过运行程序…

c语言运算符ppt,C语言知识学习运算符.ppt

C语言知识学习运算符.ppt 第三章,C语言运算符,回顾,变量和常量的含义 熟悉基本数据类型 - int、char、float 和 double 使用算术运算符 理解类型转换 熟练使用 scanf 和 printf 函数,课程目标,算术运算符 增量运算符 逻辑运算符 关系运算符 按位运算符 C的特殊运算符 --“” “…

ionic判断android版本,$ionicplatform 判断是android还是ios?

一只名叫tom的猫安装环境首先应该安装好 node.js (略),然后安装cordova、ionic等sudo npm install -g cordova ionic ios-sim创建不同类型的项目目前可以用blank,tabs,sidemenu三种ionic start myApp tabs常用插件cordova plugin add com.ion…

华为鸿蒙等不急了,华为最强巨作,鸿蒙OS+六摄+麒麟985,网友:等不及了!

原标题:华为最强巨作,鸿蒙OS六摄麒麟985,网友:等不及了!华为最强旗舰机一般公认是Mate系列,虽然华为跟三星一样,也是走双旗舰,Mate和P系列都是旗舰机,但是华为和三星有所…

华为鸿蒙2.0操作页面,华为鸿蒙2.0开面界面确认,这一变化你可懂

最近一段时间关于华为鸿蒙手机端操作系统的消息非常多,但是由于目前仅是测试阶段,我们无法全面的了解这个全新的操作系统长什么样。在操作上有何不同等等,在这样的前提之下很多参与内测有朋友时不时的就会放出一些信息。5月5日有人放出了华为…

android p正式版,国内首家!一加正式推送Android P正式版

近日,相信不少一加6的用户都收到了Android9.0也就是Android P系统的推送,如果没有记错的话,这应该是首个推送Android P稳定版的系统,而此前一加也是首个开放Android P公测的手机品牌,看来一加在系统的更新推进速度上确…

html悬停放大图片代码,html – 放大图像并在悬停时显示div

在图像悬停时,我想放大图像并显示带有透明背景的div.这是我的代码.在下面的示例中,当我将鼠标悬停在.Image类中的图像上时,我想要缩放它,并希望在div的中心显示类.mylink的链接.我能够放大悬停但是当我为.text添加样式时,它不再放大图像.HTML:linkCSS:#B…

夜间模式html,夜间模式.html

demo.dark {background-color: #363636;filter: invert(100) hue-rotate(180deg);}.dark img {filter: invert(100) hue-rotate(180deg);}Switch theme一个第三方的 GMail 的 Web 客户端。百度链接var darkSwitch falsedocument.getElementById(switch).addEventListener(clic…

html5常用插件大全,前端常用插件utils汇总

发布于 2020-03-06工具库 || 数据处理表单验证---jquery图片懒加载---JavaScript---vue---react图片预览类似朋友圈满足聊天递增图片的需求---vue文件上传---JavaScript---vue单选框/复选框相关---jquery选择框tree树形---jquery无限滚动---vue列表拖拽---vue---react元素拖曳自…

刚学计算机先学什么好,计算机语言入门先学什么?

刚想开始计算机学习的小白难免会有这样的困惑:计算机语言入门先学什么?简单来讲,初学者需要先了解各种计算机语言,熟悉计算机组成原理,学习数据结构与算法、数据库、基础语法等等,这些都是必须经历的基础学…

xml控制html样式,XML与CSS综合设置实例

XML与CSS综合设置实例HTTP代码如下:charset "utf-8";charset "utf-8";bookname{display:block;font-size:36px;font-weight:bold;font-family:宋体;text-align:center;}bieming{display:block;font-size:20px;font-weight:normal;font-family:宋…

幼儿园体育游戏电子计算机教案,幼儿园体育游戏教案3篇

幼儿园体育游戏教案3篇让幼儿通过各种体能游戏,锻炼走、跑、跳、爬等的能力,发展身体的灵活性和平衡能力。具有一定的竞争意识和集体荣誉感。以下是小编精心整理的幼儿园体育游戏教案的相关教案,老师们快来欣赏学习吧!幼儿园体育游戏教案范文一体能游戏活动目标:1、…

计算机专业的三行情书,各专业三行情书,看懂你就是全能学霸!

导读你所在的专业有哪些三行情书?你说工科的我不解风情,我说我愿意用我的专业写三行情书,读给你听。先等等,等我看明白了再给你答复。四川师范大学晒出了不少三行情书:仔细读,很多都用上了专业梗&#xff0…

评价微型计算机总线的性能指标,计算机组成原理学习笔记(3):总线

文章目录课程笔记导览附录:英语解释第三章 总线3.1 总线的基本概念使用总线的原因:总线的定义总线上信息的传送总线结构举例单总线结构面向CPU的双总线结构以存储器为中心的双总线结构框图3.2 总线的分类3.3 总线性能及性能指标总线物理实现总线特性总线…

html键盘制作,HTML手写键盘(一)

HTML手写键盘 (单密码框)先上图粘贴图片.png大致原理:先用css画出整个键盘 ,并没有input框,如果使用input实现效果,则需要多个input,这样的后果是需要多次调用键盘,影响整体的体验,用ul li画出密…

登录页面

<!doctype html> <html><head><meta charset"utf-8"><title></title></head><link rel"stylesheet" href"../css/登录页面.css" /><body><form action"#" method"get&…

在计算机网络术语中wan的中文意思是什么,男生聊天中wan是什么意思 wan是什么的缩写...

在聊天的过程中&#xff0c;有的人喜欢发“wan”&#xff0c;这是晚安的意思吗&#xff1f;还是其他的意思&#xff1f;男生聊天中wan是什么意思&#xff1f;wan是什么的缩写&#xff1f;男生聊天中wan是什么意思&#xff1a;wan是“玩”、“晚安的晚”等字的拼音&#xff0c;根…

计算机管理 内存在哪里看,教您win7怎么查看内存

我们都知道&#xff0c;每运行一个程序就会占用内存资源&#xff0c;程序运行多了&#xff0c;就会导致电脑运行缓慢。找到无关但大量占用硬件资源的程序将有助于电脑的运行。那么win7怎么查看内存运行呢&#xff1f;下面&#xff0c;小编就提供解决win7系统下如何查看内存资源…

武汉超级计算机中心,加快打造“五个中心” 武汉率先开建人工智能计算中心...

(来源&#xff1a;武汉市发改委)原标题&#xff1a;加快打造“五个中心” 武汉率先开建人工智能计算中心从华为东莞松山湖基地运来的预制化模块箱体&#xff0c;正在光谷科学岛起步区被吊装&#xff0c;未来将被“拼装”成武汉重要的人工智能算力基础设施。3月1日&#xff0c;武…

计算机232接口接线,9针rs232串口接线图以及接线方法

原标题&#xff1a;9针rs232串口接线图以及接线方法九针串口即RS-232接口&#xff0c;个人计算机上的通讯接口之一&#xff0c;由电子工业协会(Electronic Industries AssociaTIon&#xff0c;EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (…