转载:http://blog.sina.com.cn/u/2002809853
最近一段时间要用c语言操作mongodb,但是在网上找到的资料太少,看到的大多数是英文,阅读不大方便,并且要仔细研究才能理解,因此,记录这段时间的学习内容与理解以备忘,同时希望能帮到在寻找这方面内容的童鞋们。
首先,编译mongo-c-driver这个东西耗费了很多时间,开始的时候按照网上的教程在win7下编译,但是出现各种各样的问题,最后一步一直提示找不到SConstruct文件,找了很久的原因都没找到,结果在放弃的第二天竟然偶然在网上发现了是因为我下的mongo-c-driver有问题,有个版本里面的是有SConstruct的而我下的没有。后来又在Linux下编译,也是出现了各式各样的问题,结果不是我自己编译成功的。不知道是mongo版本升级的原因还是因为在Linux环境的原因,用C语言对mongo的操作在Linux下与我第一次编译时很不一样,头文件引用应该是mongoc.h 而不是mongo.h。以下是mongoc的操作。
声明client的语句是:mongoc_client_t * client;
创建一个新的mongoc的client用的语句是
mongoc_client_t * mongoc_client_new (const char *uri_string);或者
mongoc_client_t * mongoc_client_new_from_uri (const mongoc_uri_t *uri);
第二个中的uri是第一个中uri_string的实例化,uri_string是一个字符串,要遵循mongoc_uri的规则。
其中mongoc_uri的创建为
mongoc_uri_t * uri;
uri = mongoc_uri_new(uri_string);
uri_string的规则为:
mongodb:// <1>
[username:password@] <2>
host1 <3>
[:port1] <4>
[,host2[:port2],...[,hostN[:portN]]] <5>
[/[database] <6>
[?options]] <7>
(1)mongodb是MongoDB协议的说明符(specifier)
(2)可选的用户名和密码
(3)这是uri唯一必须的部分,它将指定主机名、IP地址或者UNIX域套接字中的任意一个
(4)可选的端口号,默认的是27017
(5)额外的可选主机和端口,可以制定多个主机
(6)如果连接字符串包含认证的证书,这里要写上要认证的数据库名称,如果/database没有具体制定并且连接字符串有认证要求,默认连接“admin”数据库
另外推荐一个网站:http://code.ohloh.net/
上面可以找到很多百度找不到的代码。
以上。