MongoDB

一. 简介

  MongoDB是介于传统数据库和NoSQL数据库之间的一种非关系型数据库。MongoDB使用c++实现,具有高可靠,高可用等优秀特性。
  每条记录相当于一个document。

documment-->row
collection-->table
db-->db
mongo-->mysql

二. 特性

(1)面向文档(document)的存储方式BSON(二进制json)
文档的schema没有严格要求,方便灵活。
(2)全索引支持 
(3)支持同步并且高可用 
(4)自动sharding(alpha阶段) 
(5)灵活的数据查询 
(6)支持MapReduce 
(7)其他:GridFS,多种语言接口,建立索引不阻塞

三. 安装

• linux
1)将mongodb-linux-x86_64-2.6.2.tgz解压到/root/programs
2)配置环境(/etc/profile)

#MongoDB
export MongoDB_HOME=/root/programs/mongodb-linux-x86_64-2.6.2
export PATH=$MongoDB_HOME/bin:$PATH

#source /etc/profile

四. 基本命令

• 启动服务(默认dbpath为/data/db)
#mongod
#mongod -dbpath /opt/data/mongodb
默认服务端口为27017


后台启动
1)添加配置文件mongodb.conf(dbpath需要人工创建)

port=27017
dbpath=data/db
logpath=logs/mongodb.log
logappend=true
fork=true

2)启动
mongod -f mongodb.conf 
3)关闭
bin/mongod -f mongodb.conf --shutdown

• 客户端连接DB
#mongo
#mongo --host localhost --port 27017
连上后,默认使用test DB

• 命令行工具
1)查看当前db
>db

2)查看其他DB(不包含当前使用的)
>show dbs

3)切换或创建DB
#use mydb

4)查询当前DB下的所有collections
>show collections

5)插入document
>x={x:"1"}
>db.test.insert(x) //test 集合如果不存在,则创建

>for (var i = 1; i <= 25; i++) db.testData.insert( { x : i } )
6)查询document
>db.test.find()

>var c = db.testData.find()
>while ( c.hasNext() ) printjson( c.next() )

>db.test.find( { x : "7" } )
db.test.find({x:"1"},{"_id":0}) //不包含_id
>db.test.find().limit(3)
>db.users.find( { age: { $gt: 18 } }, { name: 1, address: 1 } ).limit(5).sort({age:1})
>db.test.find( { x: { $in: [ '1', '3' ] } } )
>db.inventory.find( { x: '1', $or: [ { qty: { $gt: 100 } }, { price: { $lt: 9.95 } } ]} )

五. 用户管理

• 创建超级用户
1)mongod以不带--auth方式启动
2)切到admin DB下
>use admin
3)添加用户及密码
>addUser("admin","password")
4)重启mongod,以带--auth方式启动
5)以后需要该用户的时候
>db.auth("admin","password")


• 创建普通用户
2)切到admin DB下并用超级用户登陆
>use admin
>db.auth("admin","password")
3)切到目标DB下并创建用户
>use test
>db.addUser("user","passwd")

原文地址:https://www.cnblogs.com/waterystone/p/5086186.html