个人笔记之java操作Mongo

java操作Mongo

  • 不足之处欢迎留言

1、文档型数据库​

  1. MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热 门 的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最 像关 系数据库的产品。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以 存 储比较复杂的数据类型。
  2. MongoDB 的官方网站地址:http://www.mongodb.org/
  3. MongoDB与MySQL数据库逻辑结构概念的对比
MongoDB 关系型数据库Mysql
数据库 数据库
集合(collections) 表(table)
文档(document) 行(row)


 

 

 

 

2、常用命令

  • 模糊查询: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条件

3、java连接操作mongo

3.1、核心依赖

  • mongodb-driver是mongo官方推出的java连接mongoDB的驱动包,相当于JDBC驱动​​​​​​
  • 个人笔记之java操作Mongo

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

3.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条件。

个人笔记之java操作Mongo

3.4、插入数据

(1)将数据转换为mongo中对应的document记录

  • Document document = new Document(map);

(2)将document记录插入表中

  • spit.insertOne(document);

(3)关闭连接

个人笔记之java操作Mongo

4、总洁

  • 遇到的异常

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编码。