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"));
- }
- }
复制代码 关于Java驱动包的一个疑问 - MongoClient mongoClient = new MongoClient("域不存在", 27017); //建立连接
复制代码 当我保存上面的代码时,发现不需要处理异常,开始我以为异常被设计成了“非检查异常”,运行时会抛出来,最后测试发现根本不会抛任何异常,后续的CRUD操作时会抛异常,但几乎都是非检查异常,个人感觉这种设计是不是有点不符合Java的异常分类机制? |