欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

简单学习Java+MongoDB

程序员文章站 2024-03-09 10:48:05
mongodb一些概念 下面以mongodb和mysql的对比来说明 mysql mongodb database(数据库) db(数据库)...

mongodb一些概念

下面以mongodb和mysql的对比来说明

mysql mongodb
database(数据库) db(数据库)
table(表) collection(集合)
row(行记录) document(文档)
column(列) field(字段)
primary key(指定主键) "_id" : objectid("******")  自动生成内置主键

mysql的数据形式如下

简单学习Java+MongoDB

同样的数据在mongodb下类似于json键值对,叫bson,如下

简单学习Java+MongoDB

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的异常分类机制?