Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145345
  • 博文数量: 53
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 305
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-15 11:45
文章分类

全部博文(53)

文章存档

2019年(2)

2017年(4)

2016年(36)

2015年(11)

我的朋友

分类: IT业界

2016-03-28 14:20:44

  摘要 MongoDB及Java调用MongoDB

  MongoDB及Java调用

  目录[-]MongoDB一些概念

  MongoDB的CRUD

  Java调用MongoDB

  关于Java驱动包的一个疑问

  MongoDB一些概念

  下面以MongoDB和MySql的对比来说明

  MySQLMongoDB

  database(数据库)db(数据库)

  table(表)collection(集合)

  row(行记录)document(文档)

  column(列)field(字段)

  primary key(指定主键)"_id" : ObjectId("******") 自动生成内置主键

  Mysql的数据形式如下



  同样的数据在MongoDB下类似于JSON键值对,叫BSON,如下



  MongoDB的CRUD

  windows下安装成功后,使用mongod命令启动服务,使用mongo命令默认连接到test库

  1,创建集合

  创建user集合:db.createCollection("user") //不需要定义字段

  2,插入

  插入name=wangxu,age=27的记录:db.user.insert({"name":"wangxu","age":27})

  3,查询

  查询全部:db.user.find()

  查询name=wangxu的记录:db.user.find({"name":"wangxu"})

  4,更新

  将name=wangxu的记录age更新成30:db.user.update({name:"wangxu"},{"$set":{"age":30}})

  5,删除

  删除name=wangxu的记录:db.user.remove({"name":"wangxu"})

  删除全部:db.user.remove()

  6,删除集合

  删除user集合: db.user.drop()

  Java调用MongoDB

  引入MongoDB的Java驱动包后,测试代码如下:

  ?1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35

  36

  37

  38

  39

  40

  41

  42

  43

  44

  45

  46

  47

  48

  49package com.wx.test;

  import java.util.ArrayList;

  import java.util.List;

  import org.bson.Document;

  import com.mongodb.MongoClient;

  import com.mongodb.client.FindIterable;

  import com.mongodb.client.MongoCollection;

  import com.mongodb.client.MongoCursor;

  import com.mongodb.client.MongoDatabase;

  import com.mongodb.client.model.Filters;

  /**

  * 测试mongodb 测试点:增加,查询,更新,删除

  *

  * @author wangxu

  * @date 2016-3-27

  */

  public class TestMongoDB {

  public static void main(String[] args) {

  // 建立连接,MongoDB默认是没有用户名及密码

  MongoClient mongoClient = new MongoClient("localhost", 27017);

  // 获取test库

  MongoDatabase db = mongoClient.getDatabase("test");

  // 创建集合

  db.createCollection("user");

  // 获取集合

  MongoCollection collection = db.getCollection("user");

  // 插入文档(支持多条)

  Document document = new Document("name", "wangxu").append("age", "27");

  Document document2 = new Document("name", "wangxu_java").append("age",

  "27");

  List documents = new ArrayList<>();

  documents.add(document);

  documents.add(document2);

  collection.insertMany(documents);

  // 更新wangxu的age为30

  collection.updateMany(Filters.eq("name", "wangxu"), new Document(

  "$set", new Document("age", 30)));

  // 查询文档

  FindIterable findIterable = collection.find();

  MongoCursor mongoCursor = findIterable.iterator();

  // 遍历游标

  while (mongoCursor.hasNext()) {

  Document doc = mongoCursor.next();

  System.out.println("name=" + doc.get("name"));

  }

  // 删除wangxu_java

  collection.deleteMany(Filters.eq("name", "wangxu_java"));

  }

  }

  关于Java驱动包的一个疑问

  MongoClient mongoClient = new MongoClient("域不存在", 27017); //建立连接

  当我保存上面的代码时,发现不需要处理异常,开始我以为异常被设计成了“非检查异常”,运行时会抛出来,最后测试发现根本不会抛任何异常,后续的CRUD操作时会抛异常,但几乎都是“非检查异常”(没有处理时,编译不报错),我个人感觉这种设计不是很符合Java的异常分类机制。

  

  

  d100006/

  d100007/

  d100008/

  

  

  

  

  

  

  

  d100015/

  d100016/

  

  

  

  

  

  

阅读(1729) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~