安装
官网下载地址:https://www.mongodb.org/downloads#production
环境:CentOS release 6.7
install mongodb
下载安装包:wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.6.tgz
tar -zxvf mongodb-linux-x86_64-rhel62-3.2.6.tgz
mv mongodb-linux-x86_64-rhel62-3.2.6 /usr/local/mongodb #/usr/local/mongodb为安装路径
export PATH=/usr/local/mongodb/bin/:$PATH
mkdir -p /data/db #/data/db 是 MongoDB 默认的启动的数据库路径(--dbpath)
install mongodb startup script
git clone https://github.com/syokenz/mongodb-init-script
cd mongodb-init-script/
cp mongod /etc/init.d/
chmod +x /etc/init.d/mongod
cp mongod.conf /etc/
vim /etc/mongod.conf
> dbpath = /data/db # 数据存储目录
mongodb startup
后台启动:mongod -f /etc/mongod.conf
chkconfig --add mongod
service mongod start
常用命令
- 停止mongodb服务
>use admin
>db.shutdownServer();
查看Mongodb服务器的版本号和主机的操作系统:
db.runCommand({"buildInfo":1})
- 查看所有数据库:show dbs
- 创建数据库:use dbname(PS:该数据库不会立刻被新建,要等到执行了insert之类的操作时,才会建立这个数据库)
- 使用数据库:use dbname
- 显示当前数据库:db
- 删除数据库:dbname.dropDatabase()
- 创建集合:db.createCollection(“collection_name”)(PS:当插入一些数据时,MongoDB会自动创建集合)
- 查看集合:show collections
- 删除集合:db.collection_name.drop()
- 模糊查看文档:
db.collection_name.find( { _id: { $regex: /^000000/i } } )
- 插入文档:
db.collection_name.insert({ title:'mongodb test', tel:110})
或者定义一个变量:document,执行:db.collection_name.insert(document) - 删除文档:
db.collection_name.remove(deletion_criteria,justOne)
(PS:deletion criteria :(可选)删除的文档的条件;justOne : (可选)如果设置为true或1,则只删除一个文档)
删除第一条找到的记录:db.collection_name.remove(deletion_criteria,1),如
db.collection_name.remove({"title" : "mongodb_test"},1)
删除所有数据:
db.collection_name.remove({})
- 更新文档:db.collection_name.update(selection_criteria,updated_data)
更新单一文档:
// $set 用来指定一个键的值。如果这个键不存在,则创建它 db.collection_name.update({'title':'mongodb test'},{$set:{'title':'New MongoDB'}}) db.collection_name.update({"_id":ObjectId("57523baf36dc6a16940abdb6")},{"$set":{"test":["test111","test222"]}}) // $unset 从文档中移除指定的键 db.collection_name.update({"_id":ObjectId("57523baf36dc6a16940abdb6")},{"$unset":{"test":1}})
更新多个文档:
db.collection_name.update({'title':'New MongoDB'},{$set:{'title':'New MongoDB Tutorial'}},{multi:true})
内嵌文档添加数组:
db.collection_name.update({"_id":ObjectId("5754e6d436dc6a25a447995c")},{$push:{"pic":{"name":"picname1","path":"/static/images/l1.jpg"}}})
或者
db.collection_name.update({"_id":ObjectId("5754e6d436dc6a25a447995c")},{$addToSet:{"pic":{$each:[{"name":"1111","path":"2222"}]}}})
addToSet可以自己判断数组是否存在,和$each结合使用,可以同时在数组中插入多个数据
内嵌文档删除数组:`db.collection_name.update({"_id":ObjectId("5754e6d436dc6a25a447995c")},{$pop:{"pic":1}})`//删除尾部
内嵌文档修改数组中的某一个值:`db.collection_name.update({"_id":ObjectId("5754e6d436dc6a25a447995c")},{$set:{"pic.0.name":"p6.jpg"}})`
查询文档:db.collection_name.find(),如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,db.collection_name.find().pretty(),还有一个findOne()方法,返回一个文档
AND语法格式:
db.collection_name.find({key1:value1, key2:value2}).pretty()
,eg:db.collection_name.find({"title":"mongodb_test","tel":120})
OR语法格式:db.collection_name.find({$or: [{key1: value1}, {key2:value2}]}).pretty()
,eg:db.collection_name.find({$or:[{"tel":120},{"age":18}]})
aggregate()方法:db.collection_name.aggregate(AGGREGATE_OPERATION)
,eg:db.collection_name.aggregate([{$group : {_id : "$title", num : {$sum : 1}}}])
,相当于SQL中的:select title, count(*) from collection_name group by title
- 查看DB版本:db.version()