简单学习Java+MongoDB

前端技术 2023/09/03 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\"));
 }
}

关于Java驱动包的一个疑问

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

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

本文地址:https://www.stayed.cn/item/7736

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。