您的位置:首页 > 数据库 > Mongodb

MongoDB快速学习

2016-04-06 20:59 549 查看

安装

官网下载地址: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

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.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()

链接:

易百教程:http://www.yiibai.com/mongodb/

菜鸟教程:http://www.runoob.com/mongodb/mongodb-tutorial.html

官方文档:https://docs.mongodb.com/manual/reference/operator/update-array/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: