
MongoDB
文章平均质量分 57
炼器散人
乒乓球+节食=减肥
展开
-
emacs中访问mongodb
* 在spacemace中安装inf-mongodb package dotspacemacs-additional-packages '(... inf-mongo)* 访问mongodb M-x inf-mongodb 对mini buffer提供的路径做修改,比如改成: mongo --host myhost --port 27017 注意,这里的前提是你的...原创 2019-10-20 13:50:40 · 656 阅读 · 0 评论 -
用newlisp通过C++动态库访问MongoDB
我想让我的newlisp程序访问MongoDB. 现在已经有MongoDB C driver,但是我没有时间去学习,只想尽快的完成工作。下面是我的方法,用C++创建一个动态库,这个动态库引用了MongoDB C++ driver. 但是会用extern "C" 导出C函数。一件事情必须知道,MongoDB C++ driver必须用-fPIC选项编译。首先,创建db.h文件extern "C" v原创 2013-12-09 18:28:00 · 4222 阅读 · 0 评论 -
newlisp 备份mongodb数据库
#!/usr/bin/newlisp(set 'folder-name (date (date-value) 0 "%Y-%m-%d"))(set 'base-path "/opt/backup")(set 'mongo-host "192.168.1.51")(set 'save-dir (format "%s/%s" base-path folder-name))(set 'del原创 2013-11-06 13:22:40 · 3136 阅读 · 0 评论 -
MongoDB 日志太大怎么办?
MongoDB的日志增长的很快,/var所在的空间马上就占满了,即便换到另一个磁盘分区保存日志,日志还是增长的很快,磁盘眼看要告磬。有一个好办法,就是使用旋转日志。MongoDB的旋转日志有点怪,Linux下mongd服务接受一个kill -SGIUSR1命令后就立刻将当前日志文件重命名为带日期的文件,然后创建新的日志文件。不想一般的旋转日志,可以配置旋转策略。不过没关系,经过测试,发送该命令时不原创 2014-05-18 20:28:48 · 8906 阅读 · 0 评论 -
MongoDB 4.6.1 c++ driver 编译
这个版本已经和之前不一样了,有专门的github的项目。https://github.com/mongodb/mongo-cxx-driver首先获取源代码:git clone https://github.com/mongodb/mongo-cxx-driver.git然后切换分支:git checkout 26compat然后用下面的命令编译:scons --prefix=/usr --use原创 2014-05-10 23:40:44 · 6158 阅读 · 5 评论 -
MongoDB官方提供了更方便的Ubuntu下安装方法
我的系统是Ubuntu 12.10首先添加key:apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10一上来就出错:Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.PJ6JkuPTD原创 2013-04-12 11:35:22 · 6084 阅读 · 0 评论 -
JSON中双引号的轮回
1. 如果JSON对象中有属性是包含双引号的,比如{"description": "25""}如果转换成字符串形式,将自动加上反斜线,变为"25\"", 然后传递给REST API,保存到MongoDB中。此时如果使用MongoDB的shell显示该数据,为"25\"", 正确。void string_to_json_string(std::string const& str, std::stri原创 2014-03-03 16:45:18 · 5863 阅读 · 0 评论 -
MongoDB 只允许本地访问
不需要用iptables帮忙,仅在mongodb.conf文件中添加一行配置即可:bind_ip = 127.0.0.1然后重新启动服务即可。原创 2014-03-06 14:57:11 · 7790 阅读 · 0 评论 -
MongoDB c++ driver 2.5.x之前版本的下载
原来的下载页面已经没有了,取而代之的是在GitHub上有一个Releases页面,里面有各个版本的c++ driver,都是独立的tarball文件。https://github.com/mongodb/mongo/releases看官方文档,以后还会变。C++driver可能不会单独打包,而是放在整个MongoDB的源代码里下载。其实并不方便,因为要下载很多代码。原创 2013-11-15 09:50:25 · 3547 阅读 · 0 评论 -
TokuMX 初体验
TokuMX2.0号称比MongoDB快50倍,同时完全兼容MongoDB 2.4的驱动。今天现在自己的开发机器上安装体验一下。首先下载,由于我是Ubuntu 14.10,目前还没有支持package安装方式,所以下载了压缩包,解压后放在/opt/tokumx-2.0.0-linux-x86_64之后,参考官方文档,添加链接:$ ln -snf /opt/tokumx-2.0.0-linux-x原创 2015-01-30 21:29:58 · 3732 阅读 · 0 评论 -
MongoDB upsert操作并发的原子性
在用C++对MongoDB执行update操作的时候,如果设置了upsert参数为true,则会自动插入不存在的数据。在高并发环境下,会导致数据重复。解决方法是为查询条件添加unique index, 参考官方文档:http://docs.mongodb.org/manual/core/write-operations-atomicity/http://docs.mongodb.org/manua原创 2015-02-03 18:28:53 · 11375 阅读 · 0 评论 -
MongoDB何时不该使用
这篇文章很认真的举了在使用MongoDB遇到的困难,和最终抛弃MongoDB的原因。花了不少时间看完,不过还没有仔细看评论,等哪天不忙了,可以再分析一下里面的信息。这里简单列举一下作者的观点:1. MongoDB的document适合存储自包含数据,不适用于document之间有Join的场景,在这种场景中,RDBMS + Cache最有效,既没有冗余数据,又能够通过后台应用自动更新缓存的方式提高原创 2015-02-04 23:42:36 · 2674 阅读 · 0 评论 -
ArchLinux 安装 MongoDB
首先更新源pacman -Syu然后安装pacman -S mongod安装后,启动systemctl start mongodb.service推出到用户目录,运行mongo进入shell, 安装成功。其他参考wiki:https://wiki.archlinux.org/index.php/MongoDB原创 2016-05-06 23:58:29 · 8543 阅读 · 0 评论 -
Ubuntu 升级 MongoDB 2.x 到 3.x
要先删除掉原来的mongodb 2.xapt-get autoremove mongodb-orgreboot这样/etc/init.d/mongodb 脚本也自动被删除了然后删除下面的配置文件/etc/apt/sources.list.d/10gen.list安装3.x的文章参考Ubuntu 15.04 安装 MongoDB 3.x原创 2015-10-11 20:33:02 · 5711 阅读 · 0 评论 -
MongoDB C++ 数组的写操作
经常会碰到这类问题,现在将前两年自己写过的代码总结一下,以后编程会方便很多。Document中包含两个数组,一个简单点,每个元素都是string,一个复杂点,每个元素都是一个对象,有两个属性address和status.> db.schedule.findOne({"_id" : ObjectId("51e930f92291307bb05a1a84")}){ "_id" : ObjectId(原创 2013-07-19 21:06:40 · 5632 阅读 · 0 评论 -
Ubuntu 15.04 安装 MongoDB 3.x
MongoDB官方文档中没有,但是实际上是可行的,需要如下步骤1. 安装keyapt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB102. 添加源echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main" | sudo tee /原创 2015-10-03 11:39:01 · 3962 阅读 · 0 评论 -
面对 MongoDB 3.x ,用什么C++ driver
首先要看下github的c++驱动项目https://github.com/mongodb/mongo-cxx-driver这里有个简要的介绍,当前C++驱动分成三个版本,放在不同的branch 中BranchStabilityDevelopmentPurposemasterAlphaIn progressNew C++11 driverlegacyStableStable EvolutionPr原创 2015-10-03 13:57:26 · 3022 阅读 · 0 评论 -
MongoDB修改数据类型
如果类型写入错误,可以通过下面的方式在命令行中修改之。db.jobtracker_data.find({'collect_time' : { $type : 2 }}).forEach(function(x) { x.collect_time = parseInt(x.collect_time); db.jobtracker_data.save(x);})本来collect_t原创 2015-03-29 16:30:52 · 8051 阅读 · 0 评论 -
MongoDB shell获取最大值和最小值
并没有发现MongoDB有专用的求最大值的方法,不过可以通过排序和取第一条来代替。下面的集合数据如下:{ "_id" : ObjectId("54c39358acace71b1bd20a70"), "epoch_min" : NumberLong(1422030840), "usage_ratio" : 0.035140007734298706 }{ "_id" : ObjectId("54c3原创 2015-01-24 21:33:21 · 19533 阅读 · 0 评论 -
MongoDB vs TokuMX 性能测试
参考文章:http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/重点是关注三个方面:1. 如何测试2. 如何用工具获取测试数据3. 如何进行replacation集群的高性能配置原创 2015-02-05 00:12:00 · 2626 阅读 · 0 评论 -
用MongoDB profiler分析慢查询
MongoDB 使用profiler分析慢查询原创 2013-12-11 10:50:32 · 8988 阅读 · 0 评论 -
Mongo 脚本连接Replica-set
现在已经支持直接自动连接到replica-set,并登录primary比如:mongo --host rs1/vm1:27017,vm3:27017,vm4:27017 db_name然后会看到一堆信息Thu Dec 12 16:44:48.227 successfully connected to seed vm1:27017 for replica set rs1Thu Dec 12 16:原创 2013-12-12 16:45:33 · 3857 阅读 · 0 评论 -
c++ 连接 MongoDB replica-set
MongoDB的官方文档描述了如何使用连接字符串的正确格式来支持single server和replica-set server,并且声称官方驱动都支持。http://docs.mongodb.org/manual/reference/connection-string/但实际上c++驱动仍然沿用旧的方式,而且文档描述相当少。可以通过这个讨论让大家看到MongoDB c++驱动有多讨厌。http:原创 2013-05-09 19:23:10 · 6202 阅读 · 2 评论 -
GCC 链接顺序导致使用MongoDB的应用链接失败
昨天晚上很沮丧,一个究竟考验的程序在升级使用了最新的MongoDB 2.4 C++ driver后报链接失败。折腾到很晚也没有搞定。/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../lib/libmongoclient.a(log.o): In function mongo::LoggingManager::start(std::string const&原创 2013-04-23 20:37:13 · 3395 阅读 · 0 评论 -
MongoDB 2.4.1 C++ driver编译和使用
这个版本仍然没有解决不能编译动态库的问题,MongoDB这帮人发什么神经?原来两个绕过的方法也不行了。只有使用静态库了。下载最新版的代码,编译scons --prefix=/usr install 旧版的C++代码会编译报错,因为ScopedDbConnection的构造函数变成了私有,必须通过静态方法来创建。所以调用代码要做相应调整。我的CMake工程配置如下:target_link_libra原创 2013-04-12 18:04:07 · 5522 阅读 · 3 评论 -
MongoDB C++应用 简单例子
假定你已经有了MongoDB server,并且工作在Ubuntu上,安装了GCC,下面的C++程序可以帮助你快速进入能够使用MongoDB的状态。#include #include using namespace std;using namespace mongo;void SaveStatus(mongo::DBClientBase& session, string const& d原创 2012-11-24 20:58:50 · 18729 阅读 · 1 评论 -
MongoDB Java 连接池的注意事项
1.Mongo对象Mongo对象内部实现了一个连接池。Mongo对象是线程安全的,因此可以只创建一个,在多线程环境下安全使用。因此,我们可以用将Mongo变量作为一个Singleton类的成员变量,从而保证只创建一个连接池。Mongo.close方法将关闭当前所有活跃的连接。所以要在web工程被从Tomcat或者GlassFish容器中注销的时候确保调用close方法。2.DB对象DB对象可以通过原创 2011-12-21 11:05:26 · 30848 阅读 · 8 评论 -
Ubuntu编译MongoDB client library
要有boost库。1.download cxx-driver for 2.0, unzip to /usr/src folderwget http://downloads.mongodb.org/cxx-driver/mongodb-linux-x86_64-v2.0-latest.tgz2.sudo apt-get install libpcre3-dev3.sudo apt-get insta原创 2011-09-03 16:50:40 · 5042 阅读 · 0 评论 -
Ubuntu安装MongoDB
获取最新版本wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.2.0.tgz 解压缩即可执行 tar zxvf mongodb-linux-x86_64-2.2.0.tgz cd /usr/mongodb-linux-x86_64-2.2.0/bin创建链接ln -s /usr/mongodb-linux-x86_64-原创 2011-08-31 20:52:16 · 18444 阅读 · 3 评论 -
MongoDB 2.0发布
2.0终于发布了,赶快试一下。 http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz试了一下,和1.8.3安装配置一样,参考我之前的文章,略微修改一下脚本文件里面的路径即可。但是C++的客户端代码无法编译动态库,原因是少了一个cpp文件,可以暂时使用1.8.3的客户端库访问。注:c++2.0客户端已经没有问题了。原创 2011-09-17 16:55:30 · 2612 阅读 · 0 评论 -
MongoDB升级操作
1.首先备份数据到另一台机器上http://www.mongodb.org/display/DOCS/Backups#Backups-Mongodump上面描述了几种备份的情况。服务不停备份服务停止备份我这次备份只是防止万一,比较简单,可以在服务运行的情况下备份。mongodump --host IP -d kaimei -o ~/kaimei_bk上面的命令运行子我自己的电脑上,也安装了mong原创 2012-04-08 10:01:45 · 5449 阅读 · 0 评论 -
MongoClient 操作MongoDB replica-set
对于MongoDB的Java驱动, 从2.10.0版本后,文档中提醒Mongo类将会被废除,现在开始都鼓励使用MongoClient类。下面演示一个Java程序如何使用最新的MongoClient类来对MongoDB写操作。首先假定已经有了一个Replica-set集群,分别是d1, d2和 d3三台虚拟机。然后创建一个Maven构建的Java应用程序。使用了maven exec plugin用来原创 2013-05-08 16:20:45 · 11788 阅读 · 0 评论 -
MongoDB Replica-set 设置
本文用三个MongoDB server来架设replica-set。首先分别准备三个UBuntu vm, 里面安装了MongoDB instance.然后每个vm的/etc/hosts里面都包含了另外两个vm的ip和主机名。这样确保每个vm都能通过主机名连接到其他两个vm.我的vm分别是:vm1, vm3, vm4. IP分别是192.168.1.51, 192.168.1.52和192.168.原创 2013-05-04 20:29:52 · 11328 阅读 · 4 评论 -
MongoDB 逻辑与操作
MongoDB $and原创 2013-12-12 10:17:59 · 3515 阅读 · 0 评论 -
monostat工具使用
用mongostat工具对数据库进行监控原创 2013-12-11 13:29:50 · 3160 阅读 · 0 评论 -
编译MongoDB C++ driver时启用-fPIC
-fPIC 在用g++编译C++程序时很有用。这里介绍了它的用处:http://explainshell.com/explain?cmd=g%2B%2B+-fpic简短来说,当编译so动态库的时候,总是使用这个开关是一个好主意。在编译MongoDB c++ 2.4.x驱动时,编辑SConstruct文件的81行env.Append(CCFLAGS=["-O3", "-pthread", "-fPI原创 2013-12-09 16:28:28 · 3535 阅读 · 0 评论 -
关闭MongoDB node
不知道是MongoDB的关机命令改了,还是因为在Replica-set中的缘故今天用service mongodb stop 关闭服务,总是得到unkonw instance的错误信息参考官方文档,得到如何关闭MongoDB primary node的方法http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/$ ./mon原创 2013-11-16 23:37:09 · 2950 阅读 · 0 评论 -
MongoDB 磁盘空间不足
有些事情,只有当长时间压力测试的时候,才能暴露出来。MongoDB集群用了几个月了,但是当写了一个长时间运行的压力测试程序后,几天时间, primary server不能启动。查看MongoDB日志发现错误信息:Fri Nov 29 10:49:13.182 [initandlisten] ERROR: Insufficient free space for journal filesFri N原创 2013-11-29 14:03:28 · 11069 阅读 · 0 评论 -
c++程序在Ubuntu 13.10上链接mongodb报错
在最新的Ubuntu13.10上,用编译器clang3.4编译我原来的程序,出现错误:c++ -g /home/likewise-open/CHN/shu6889/.private/windtunnel/code/site/builder/object/site_response.cc.o /home/likewise-open/CHN/shu6889/.private/windtunnel/co原创 2013-10-21 12:58:32 · 6072 阅读 · 0 评论 -
MongoDB C++ 2.4.6 driver 编译安装问题
安装参考前文,http://blog.youkuaiyun.com/sheismylife/article/details/8794589方法一致。只不过这次在GCC4.8.1上编译。scons install 没有正确安装头文件和.a文件到系统目录下。需要手动运行下面的命令:cp -r src/mongo/ /usr/include/chmod -R 777 /usr/include/mongo/cp原创 2013-07-30 15:52:06 · 3425 阅读 · 0 评论