MongoDB是高性能(得益于内存缓存)、无模式的文档型数据库,支持二级索引,类json格式存储(bson),非常适合文档化格式的存储及查询。适合用来存放评论等半结构化数据;
MongoDB的官方定位是通用数据库,与MySQ类似,但跟传统关系型数据库比较,Mongo在事务、join、复杂查询应用下仍旧无法取代关系型数据库。
mongo shell
query
- ObjectId:
db.getCollection('activities').find(ObjectId('5a9f5e7137c65800015df8d0'))
- AND:
db.collection.find({ "key" : "value", "key1" : "value1"})
- OR:
db.collection.find({ |
条件
- lt, lte, gt, gte:
db.collection.find({ |
- not null :
db.collection.find({"key": {$exists:true}})
排序
- 升序:
db.collection.find({}).sort({"key": 1})
- 降序:
db.collection.find({}).sort({"key": -1})
update
格式:
db.collection.update( |
例子:
db.getCollection('activities').update( |
inc自增:
db.getCollection('activities').update( |
数组操作
- $push:向文档数组中添加元素,如果没有该数组,则自动添加数组
- $addToSet:功能与$push相同,区别在于,$addToSet把数组看作成一个Set,如果数组中存在相同的元素,不会插入。
$addToSet : {'displayAttributes' : 'totalPvShow'}
数组操作:
db.getCollection('activities').update( |
aggregate
设每个数据包括 { "icq": "xxx", "score1" : 1, "score2" : 2 }
, 按icq
聚合, 求score1
和score2
的和
db.getCollection('item').aggregate([ |
mongo命令
启动数据库并开启权限: /opt/apps/mongodb/bin/mongod --config /opt/conf/mongo/mongo.conf --auth
连接mongo并查询
mongo 127.0.0.1 -u username -p pwd --port 28015 # 连接数据库 |
关闭mongo服务:
> use admin |
mongoexport
mongoexport参数说明:
- -d: database
- /c: collection
- /q: query filter, as a JSON string, e.g., ‘{x:{$gt:1}}’
- /sort: sort order, as a JSON string, e.g. ‘{x:1}’
- —-authenticationDatabase “admin” : 指定验证db
将info库中student的id,name信息以json格式导出到student_json.dat数据文件中,并且限定“行数”是1
mongoexport -h 127.0.0.1 -u root -p 12345 -d info -c student --type=json -f id,name --limit=1 -o E:\data\student_json.dat
- 将info库student collections的name=a的信息以cvs格式导出到student_cvs.dat数据文件中
mongoexport -h 127.0.0.1 -u root -p 12345 -d info -c student --type=cvs -q{"name":"a"} -o E:\data\student_cvs.dat
权限
- 在admin数据库里addUser创建的是管理员用户, 可以访问任何数据库
db.addUser("admin","admin");
use DATABASE_NAME
: 如果数据库不存在,则创建数据库,否则切换到指定数据库。- 在某个数据库里addUser创建的用户, 只有对这个数据库的权限
- 创建用户: db.addUser(“user”,”pwd”);
- 删除用户: db.removeUser(“xxx”);
- 查找用户: db.system.users.find()
创建具有admin权限的用户:
> use admin |
如何使用创建的用户登录:
use admin # 授权admin必须切换到admin库 |