安装
- 下载二进制文件安装
- 将MongoDB的bin目录添加到path环境变量中
- 在MongoDB安装目录下新建db目录
这个文件夹保存所有的数据库的信息 - 在MongoDB目录下创建log目录,并且在目录下创建mongodb.log文件
- 在MongoDB安装目录下创建文件mongodb.conf,并在文件中配置些常用信息
#设置数据目录的路径 dbpath = D:\MongoDB\db # 设置日志信息的文件路径 logpath = D:\MongoDB\log\mongodb.log # 打开日志输出操作 logappend = true # 不使用任何认证登录 noauth = true # 设置端口 port = 27001
- 启动MongoDB数据库
6.1 mongod
6.2 mongod -f D:\MongoDB\mongodb.conf - 进入MongoDB数据库
7.1 mongo
7.2 =mongo --port=27001== - 查看所有数据库
8.1 show databases - 切换数据库
9.1 use 数据库名称
- 查看、创建一个集合
10.1 查看集合 show collections;
10.2 db.createCollection(“集合名称”) - 给集合中添加数据
11.1 db.集合名称.insert();
范例 db.dept.insert({“deptNo”:“10”,“deptName”:“研发部”,“loc”:“E3F5”}); - 查看集合
12.1 db.集合名称.find({若干条件})
范例 db.dept.find();
12.1 查看集合一条数据 db.集合名称.findOne();
范例 db.dept.findOne();
注意: 在mongodb中绝对不可能存在有查看集合结构的操作(类是关系数据中表结构)
- 删除数据
13.1 删除集合中的数据
语法 db.集合名称remove({条件});
范例 db.dept.remove({"_id" : ObjectId(“57a20ee0ba454a1194ac44ac”)});
13.2 删除集合
语法 db.集合名称.drop()
范例 db.dept.drop();
13.3 删除数据库
语法 db.dropDatabase();
注意 表示删除当前所在的数据库,所以必须先切换到数据库下才能够删除次数据
- 更新集合
14.1 db.集合名称.update(更新的ID,更新数据);
范例var deptDate ={ "deptno" : 20, "name" : "秘书部", "loc" : "宝安", "count" : 20, "avg":18 }; db.dept.update({"_id" : ObjectId("57a21023ba454a1194ac44ad")},deptDate);
数据增加
- 插入集合数据
范例db.dept.insert([ { "deptNo":20, "deptName":"赵云", "age":18 }, { "deptNo":30, "deptName":"张飞", "age":19 }, { "deptNo":50, "deptName":"关羽", "age":30 } ]);
- 批量插入数据
2.1 批量数据可以采用JavaScript来实现for(var i = 100;i<10100;i++){ db.dept.insert({"deptNo":i,"deptName":"关羽-"+i}); }
数据查询操作
- db.集合名称.find({查询条件}[,{设置显示的字段}]);
db.dept.find({"_id" : ObjectId("57a34adceb779c50e1e9ddd9")});
db.dept.find({"_id" : ObjectId("57a34adceb779c50e1e9ddd9")},{"_id":0,"deptName":1});
说明 字段显示为1,不显示为0,默认是1
2. 数据格式显示(漂亮显示)
db.dept.find().pretty();
需要列多的时候才有效果
3. db.depte.findOne();
关系运算
- Mongodb中的关系有 大于( g t ) , 小 于 ( gt),小于( gt),小于(lt),大于等于( g t e ) , 小 于 等 于 ( gte),小于等于( gte),小于等于(lte),不等于( n e ) , 等 于 ( ne),等于( ne),等于(eq),
db.students.insert([
{"name":"关羽","sex":"男","age":18,"score":89,"address":"中国钓鱼岛"},
{"name":"赵云","sex":"男","age":20,"score":100,"address":"中国深圳"},
{"name":"黄忠","sex":"男","age":23,"score":98,"address":"中国西沙群岛"},
{"name":"张飞","sex":"男","age":32,"score":60,"address":"中国南海"},
{"name":"陆逊","sex":"男","age":18,"score":50,"address":"中国西海"},
{"name":"黄盖","sex":"男","age":30,"score":100,"address":"中国东海"},
{"name":"盖聂","sex":"男","age":30,"score":78,"address":"中国渤海"},
{"name":"项羽","sex":"男","age":25,"score":66,"address":"中国北京"},
{"name":"天明","sex":"男","age":20,"score":52,"address":"中国上海"},
{"name":"韦庄","sex":"男","age":35,"score":63,"address":"中国洞庭湖"},
{"name":"刘邦","sex":"男","age":40,"score":77,"address":"中国长江"},
{"name":"韩信","sex":"男","age":39,"score":99,"address":"中国黄河"},
{"name":"高月","sex":"女","age":18,"score":90,"address":"中国泰山"},
{"name":"端木蓉","sex":"女","age":15,"score":88,"address":"中国华山"},
{"name":"秦始皇","sex":"男","age":25,"score":100,"address":"中国岳阳"}
]);
db.students.insert({"name":"小明","sex":"男","age":18,"score":89,"address":"中国钓鱼岛","course":["数学","英语","政治"]});
db.students.insert({"name":"小西","sex":"男","age":18,"score":89,"address":"中国钓鱼岛","course":["化学","数学","政治"]});
db.students.insert({"name":"寒梅","sex":"男","age":18,"score":89,"address":"中国钓鱼岛","course":["数学","英语","政治","生物"]});
db.students.insert({"name":"小磊","sex":"男","age":18,"score":89,"address":"中国钓鱼岛","course":["数学","英语","政治","化学","劳动"]});
1.1 查询姓名是张飞的信息
db.students.find({“name”:“张飞”}).pretty();
注意: 在所有关系逻辑操作中只有相等才是如上写法,其他的判断都需要嵌套子JSON
1.2 查询年龄大于20的信息
语法 db.collection.find({ “field” : {KaTeX parse error: Expected 'EOF', got '}' at position 11: gt: value }̲ } ); ==…gt":20}}).pretty();
- in 和 not in ($in $nin)
2.1 语法db.collection.find( { "field" : { $in : array } } );
2.2 范例db.students.find({"age" : { $in : [35,20,15,18] } } );
逻辑运算符
逻辑运算符:与( a n d ) , 或 ( and),或( and),或(or),非( n o t , not, not,nor)
-
and
查询年龄在20~30之间的信息
语法
范例db.students.find({"age" : {"$gt" : 20,"$lt":30}}).pretty();
and是最简单的操作,只需要通过,分割条件即可 -
or
db.students.find({"$or":[{"age" : {"$lt":50}},{"score":{"$gt":80}}]}).pretty();
-
非
db.students.find({"$nor":[{"age" : {"$lt":18}},{"score":{"$gt":80}}]}).pretty();
-
求模
语法{"$mod":[数字,余数]}
查找年龄是20的倍数
范例db.students.find({"age":{"$mod":[20,0]}});
-
数组查询
在Mongodb中支持数组的保存,针对数组数据进行判断,可以使用 a l l , ∗ ∗ , ∗ ∗ all,**,** all,∗∗,∗∗size, s l i c e ∗ ∗ , ∗ ∗ slice**,** slice∗∗,∗∗elemMatch
范例 查询同时是参加语文和数学课程的学生db.students.find({"course":{"$all":["数学","英语"]}}); db.students.find({"course":{"$size":3}}); db.students.find({"age":18},{"course":{"$slice":1}}).pretty(); db.students.find({"age":18},{"course":{"$slice":[1,2]}}).pretty();
{"$slice":[1,2]} —> [1,2]表示跳过一个,返回2个
JAVA 操作MongoDB
- MongoDB 3 和三以前的操作方式不一样
- MongoDB 3以前的操作方式如下
1. 添加Jar包 <!--mongodb驱动--> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.2.8</version> </dependency> <!--spring-mongodb驱动--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.8.2.RELEASE</version> </dependency> 2. 设置要练级的额数据库的主机名称与端口号 MongoClient client = new MongoClient("localhost",27001); 3. 连接数据库 DB db = client.getDB("haoya"); 4. 进行数据库的用户名与密码验证 db.authenticate("","".toCharArray()); //获得说有的集合 String[] list = db.getCollection(); //获得指定的集合 DBBCollection col = db.getCollection("集合名称"); //设置查询条件 DBObject cond = BasicDBObject(); cond.put("depton",new BasicDBObject("$gte",1000).append("$lte",2000)); //获得集合的全部类容 //DBCursor cursor = col.find(); //分页获得数据 //DBCursor cursor = col.find().skip(0).limit(20); DBCursor cursor = col.find(cond).skip(0).limit(20); while(cursor.hasNext()){ //得到每一行的数据 DBObject obj = cursor.next(); System.out.println("部门编号:" + obj.get("deptno")); } //关闭数据库 client.close();