java操作Mongo
- 不足之处欢迎留言
1、文档型数据库
- MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热 门 的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最 像关 系数据库的产品。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以 存 储比较复杂的数据类型。
- MongoDB 的官方网站地址:http://www.mongodb.org/
- MongoDB与MySQL数据库逻辑结构概念的对比
MongoDB | 关系型数据库Mysql |
数据库 | 数据库 |
集合(collections) | 表(table) |
文档(document) | 行(row) |
2、mongo服务启动和停止
2.1、启动
前提:配置好环境变量path
- 任务管理器:启动mongo服务
- cmd:直接输入mongo或mongod --dbpath data所在目录
2.2、停止
- 任务管理器:停止mongo服务
- cmd:
- 1)切换到admin权限,db.shutdownServer()
- 2)查看进程,使用kill命令,不能使用kill -9
3、常用命令
- 模糊查询:dp.集合名.find({字段:/str/})
- 以str开头:db.集合名.find({字段:/^str/})
- 修改某条记录:db.集合名.update(条件,修改后的数据),$set修改器
db.spit.update({userdi:“1”},{$set:{name:“小明”}})
- 包含:$in:[]
- 不包含:$nin:[]
- 条件连接:$and[条件1,条件2]、$or[条件1,条件2]
- BasicDBObject.put():表示一个具体的记录。用来构建查询条件。相当于map.
- BasicDBList.add():可以存放多个BasicDBObject条件
4、java连接操作mongo
4.1、核心依赖
- mongodb-driver是mongo官方推出的java连接mongoDB的驱动包,相当于JDBC驱动
4.2、操作步骤
- 首先确保mongo中有数据库并有要操作的表(本例:spitdb库,spit表)
(1)建立连接
- MongoClient mongoClient = new MongoClient("localhost");
(2)打开数据库
- MongoDatabase spitdb = mongoClient.getDatabase("spitdb");
(3)获取某个集合(表)
- MongoCollection<Document> spit = spitdb.getCollection("spit");
(4)查询获取集合中的文档集合(表中数据记录)
- FindIterable<Document> documents = spit.find();
- FindIterable<Document> documents = spit.find(条件Bson格式);
(5)关闭连接
- mongoClient.close();
4.3、条件查询
(1)构建查询条件
- 【例1-----userid为1013的】
- BasicDBObject bson = new BasicDBObject("userid","1013");
- 【例2-----浏览量大于1000】
- BasicDBObject bson = new BasicDBObject("visits",new BasicDBObject("$gt",1000));
(2)查询集合中符合条件的文档集合(表中数据记录)
- FindIterable<Document> documents = spit.find(bson);
(3)BasicDBObject:表示一个具体的记录。用来构建查询条件。相当于map.
(4)BasicDBList:可以存放多个BasicDBObject条件。
4.4、插入数据
(1)将数据转换为mongo中对应的document记录
- Document document = new Document(map);
(2)将document记录插入表中
- spit.insertOne(document);
(3)关闭连接
5、总洁
- 遇到的异常
bug1:Exception in monitor thread while connecting to server 192.168.1.160:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
原因:本地测试ip只能是localhost或者127.0.0.1,192.168.1.160不行。bug2:java输出Mongo中文乱码或为问号
原因:BSON只支持UTF8编码。