4

Mongodb初用记录

 2 years ago
source link: https://www.hi-roy.com/posts/mongodb%E5%88%9D%E7%94%A8%E8%AE%B0%E5%BD%95/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Mongodb初用记录

2014-04-09

关于介绍以及缺点等网上介绍很多,这里记录一下我遇到的问题:

首先就是使用yum install安装后的mongodb无法设定开机启动。其次,即使修改了/etc/monggdb.conf文件的相关路径,运行时还必须手动指定dbpath参数才可运行。

于是按照官方指南说明的方法,添加了mongodb的源,安装yum install mongo-10gen mongo-10gen-server之后chkconfig mongod on才能设定成为开机启动。不过使用service mongod start启动、停止、重起服务会出现假死。但是不影响使用。

配置文件为:/etc/mongod.conf

初始化脚本为:/etc/rc.d/init.d/mongod

数据存储路径:/var/lib/mongo/

日志文件存储路径:/var/log/mongo/

守护进程运行用户为:mongod

任何数据最最基本的操作不外乎增删改查:

> db.test.save({a:1})
> db.test.find()
{ "_id" : ObjectId("530d3ec2d93e8e1410a1caf6"), "a" : 1 }
> doc = {author:'xsy',created: new Date('02/26/2014')}
{ "author" : "xsy", "created" : ISODate("2014-02-25T16:00:00Z") }
> db.test.insert(doc)
> db.test.find()
{ "_id" : ObjectId("530d3ec2d93e8e1410a1caf6"), "a" : 1 }
{ "_id" : ObjectId("530d3f1ed93e8e1410a1caf7"), "author" : "xsy", "created" : ISODate("2014-02-25T16:00:00Z") }
> db.test.update({author:'xsy'},{$inc:{check:400}})
> db.test.find()
{ "_id" : ObjectId("530d3ec2d93e8e1410a1caf6"), "a" : 1 }
{ "_id" : ObjectId("530d3f1ed93e8e1410a1caf7"), "author" : "xsy", "check" : 400, "created" : ISODate("2014-02-25T16:00:00Z") }
> db.test.remove({a:1})删除
> db.test.find()
{ "_id" : ObjectId("530d3f1ed93e8e1410a1caf7"), "author" : "xsy", "check" : 400, "created" : ISODate("2014-02-25T16:00:00Z") }
>

更换数据库:默认情况下启动mongodb shell后自动使用的是test库,想换的话使用命令 use  newname:

> use mydb
switched to db mydb
> db.mydb.save({a:2})
> db.test.find()
> db.mydb.find()
{ "_id" : ObjectId("530d498ed93e8e1410a1caf8"), "a" : 2 }
>

如上所示,当切换(或者说新建)数据库mydb后,再查询test数据是不显示的。而数据库目录下也多处了mydb.ns、mydb.0等相关文件。

看了增删改查的操作后,发现mongodb的操作更类似于编程语言,操作都是对于函数的调用,条件则是函数的参数。而且居然还支持正则表达式的查询方式,甚至for\foreach这两种循环都有。带$符号的则是关键字。

啊哈,mongodb的存储过程居然是用js写,书到用时方恨少阿!!真得抽时间学学JS了…

继续看,发现可以直接把文件存放在mongo数据库中,用到了gridfs。突然想起,mysql中有一种类型叫做blob,用于存放文件。

要在python中操作mongodb,需要一个pymongo,文档:http://api.mongodb.org/python/current/tutorial.html


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK