Docker下,极速体验mongodb
来源:互联网 发布:矩阵分析课后答案pdf 编辑:程序博客网 时间:2024/06/06 12:36
MongoDB是基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
下载镜像
在Docker环境下很容易搭建一个mongodb单机版server,先执行docker pull mongo:3.2命令下载官方镜像;
运行mongodb
下载成功后,执行以下命令即可创建一个mongodb容器:
docker run --name mongodbstandalone -idt mongo:3.2
进入控制台
执行以下命令进入容器mongodbstandalone:
docker exec -it mongodbstandalone /bin/bash
再执行mongo即可进入命令行控制台,如下图:
基本操作
可以直接在控制台做四则运算,如下图:
以下是几个基本的命令:
1. show dbs :列出所有数据库;
2. db:显示当前使用的数据库;
3. use test:使用test数据库;
效果如下图:
相对概念
用惯了mysql再来用mongo,有些概念还是有点不习惯的,在此列出来对比一下:
接下来我们把增删改查都实践一遍:
新增
执行命令use school即可切换到school数据库(不存在就创建),如下所示:
> use schoolswitched to db school> dbschool> show dbslocal 0.000GB>
执行命令db.student.insert({name:”Tom”, age:16})会在集合student中创建一个文档(集合不存在就创建),再执行db.student.find()可以查询student表的所有记录,如下所示:
> db.student.insert({name:"Tom", age:16})WriteResult({ "nInserted" : 1 })> db.student.insert({name:"Jerry", age:15})WriteResult({ "nInserted" : 1 })> db.student.insert({name:"Mary", age:9})WriteResult({ "nInserted" : 1 })> db.student.find(){ "_id" : ObjectId("59d82f9fece586325c4917c3"), "name" : "Tom", "age" : 16 }{ "_id" : ObjectId("59d8305aece586325c4917c4"), "name" : "Jerry", "age" : 15 }{ "_id" : ObjectId("59d83066ece586325c4917c5"), "name" : "Mary", "age" : 9 }
以上操作中一共新增了三个文档;
修改
执行命令db.student.update({‘name’:’Jerry’},{$set:{‘age’:11}})可以修改name为‘Jerry’的文档,将age改为11,如下所示:
> db.student.update({'name':'Jerry'},{$set:{'age':11}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.student.find(){ "_id" : ObjectId("59d82f9fece586325c4917c3"), "name" : "Tom", "age" : 16 }{ "_id" : ObjectId("59d8305aece586325c4917c4"), "name" : "Jerry", "age" : 11 }{ "_id" : ObjectId("59d83066ece586325c4917c5"), "name" : "Mary", "age" : 9 }
注意update方法的入参,第一个大括号{‘name’:’Jerry’}表示查询条件,第二个大括号{$set:{‘age’:11}}表示更新的内容;
查找
执行命令db.student.find({‘age’:{$lte:11}})可以查找所有age小于等于11的文档:
> db.student.find({'age':{$lte:11}}){ "_id" : ObjectId("59d8305aece586325c4917c4"), "name" : "Jerry", "age" : 11 }{ "_id" : ObjectId("59d83066ece586325c4917c5"), "name" : "Mary", "age" : 9 }
{‘age’:{$lte:11}}是查询条件, $lte是小于等于的意思,以下是几个比较符号:
1. $lt:小于,less than;
2. $lte:小于等于,less than equal;
3. $gt:大于,greater than;
4. $gte:大于等于,greater than equal;
5. $ne:不等于,not equal;
还有limit(N)表示返回指定文档数:
> db.student.find({'age':{$lte:11}}).limit(1){ "_id" : ObjectId("59d8305aece586325c4917c4"), "name" : "Jerry", "age" : 11 }
skip(N)方法表示跳过前面N条文档:
> db.student.find({'age':{$lte:11}}).skip(1){ "_id" : ObjectId("59d83066ece586325c4917c5"), "name" : "Mary", "age" : 9 }
AND条件:
直接在查询的大括号中增加条件就是AND查询,如下所示:
> db.student.find({'age':{$lte:11}, 'name':'Mary'}){ "_id" : ObjectId("59d83066ece586325c4917c5"), "name" : "Mary", "age" : 9 }
OR条件:
OR查询要用到{$or:[]},中括号中填入多个查询条件,如下所示:
> db.student.find({$or:[{'name':'Mary'}, {'name':'Tom'}]}){ "_id" : ObjectId("59d82f9fece586325c4917c3"), "name" : "Tom", "age" : 16 }{ "_id" : ObjectId("59d83066ece586325c4917c5"), "name" : "Mary", "age" : 9 }
排序:
排序的时候用到sort({key:X})方法,key表示用来排序的字端,X等于1时表示升序,X等于-1时表示降序,如下所示:
> db.student.find({$or:[{'name':'Mary'}, {'name':'Tom'}]}).sort({age:1}){ "_id" : ObjectId("59d83066ece586325c4917c5"), "name" : "Mary", "age" : 9 }{ "_id" : ObjectId("59d82f9fece586325c4917c3"), "name" : "Tom", "age" : 16 }> db.student.find({$or:[{'name':'Mary'}, {'name':'Tom'}]}).sort({age:-1}){ "_id" : ObjectId("59d82f9fece586325c4917c3"), "name" : "Tom", "age" : 16 }{ "_id" : ObjectId("59d83066ece586325c4917c5"), "name" : "Mary", "age" : 9 }
以上就是Docker下快速体验mongodb的所有操作,希望能对刚入门的读者建立一个初步的印象;
- Docker下,极速体验mongodb
- docker下使用disconf:极速体验
- Docker下,极速体验pinpoint1.6.3
- Docker下kafka学习,三部曲之一:极速体验kafka
- Docker下dubbo开发,三部曲之一:极速体验
- Docker下实战zabbix三部曲之一:极速体验
- Docker下HBase学习,三部曲之一:极速体验
- Docker下,极速体验编译pinpoint1.6.x分支
- Docker下实战zabbix三部曲之一:极速体验
- Docker体验 Ubuntu下安装
- 极速体验编译openjdk8(docker环境)
- 体验 Docker
- MongoDB体验
- Docker下,实战mongodb副本集(Replication)
- Docker下安装Rockmongo,图形化操作mongodb
- 【MongoDB+docker】docker 配置 mongodb 复制集
- Docker初体验
- docker 1.12 体验
- python jieba分词
- 高斯消元(写(shui)题必备)
- 离线配置android studio
- bzoj 4364: [IOI2014]wall砖墙
- Django前后台数据传递
- Docker下,极速体验mongodb
- 什么是P问题、NP问题和NPC问题
- 机器学习概念(Opencv笔记!)
- spring+shiro+redis实现session共享
- bzoj 1967: [Ahoi2005]CROSS 穿越磁场
- 让windows下的oracle startup hang住的一个设置
- bzoj 1970: [Ahoi2005]Code 矿藏编码
- 一个Sqrt函数引发的血案
- KNN分类算法原理与Python+sklearn实现根据身高和体重对体型分类