简单学习MongoDB及Java调用

MongoDB一些概念

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

MySQL MongoDB
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驱动包后,测试代码如下:

package 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<Document> 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<Document> findIterable = collection.find();
  MongoCursor<Document> 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"));
 }
}

一个驱动包的疑问

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

当我保存上面的代码时,发现不需要处理异常,开始我以为异常被设计成了"非检查异常",运行时会抛出来,最后测试发现根本不会抛任何异常,后续的CRUD才会抛,但也是Java非检查异常,我个人觉得这个设计有一点不遵循Java的异常分类机制, 但是大可放心,语法和功能都是没有问题的 。

你可能感兴趣的:(MongoDB及Java调用)