在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

简单学习Java+MongoDB

2016-8-29 13:48| 发布者: zhangjf| 查看: 603| 评论: 0

摘要: MongoDB一些概念 下面以MongoDB和MySql的对比来说明 MySQL MongoDB database(数据库) db(数据库) table(表) collection(集合) row(行记录) document(文档) column(列) field(字段) primary key(指 ...

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

  1. package com.wx.test;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import org.bson.Document;
  5. import com.mongodb.MongoClient;
  6. import com.mongodb.client.FindIterable;
  7. import com.mongodb.client.MongoCollection;
  8. import com.mongodb.client.MongoCursor;
  9. import com.mongodb.client.MongoDatabase;
  10. import com.mongodb.client.model.Filters;
  11. /**
  12. * 测试mongodb 测试点:增加,查询,更新,删除
  13. *
  14. * @author wangxu
  15. * @date 2016-3-27
  16. */
  17. public class TestMongoDB {
  18. public static void main(String[] args) {
  19. // 建立连接,MongoDB默认是没有用户名及密码
  20. MongoClient mongoClient = new MongoClient("localhost", 27017);
  21. // 获取test库
  22. MongoDatabase db = mongoClient.getDatabase("test");
  23. // 创建集合
  24. db.createCollection("user");
  25. // 获取集合
  26. MongoCollection collection = db.getCollection("user");
  27. // 插入文档(支持多条)
  28. Document document = new Document("name", "wangxu").append("age", "27");
  29. Document document2 = new Document("name", "wangxu_java").append("age",
  30. "27");
  31. List<Document> documents = new ArrayList<>();
  32. documents.add(document);
  33. documents.add(document2);
  34. collection.insertMany(documents);
  35. // 更新wangxu的age为30
  36. collection.updateMany(Filters.eq("name", "wangxu"), new Document(
  37. "$set", new Document("age", 30)));
  38. // 查询文档
  39. FindIterable<Document> findIterable = collection.find();
  40. MongoCursor<Document> mongoCursor = findIterable.iterator();
  41. // 遍历游标
  42. while (mongoCursor.hasNext()) {
  43. Document doc = mongoCursor.next();
  44. System.out.println("name=" + doc.get("name"));
  45. }
  46. // 删除wangxu_java
  47. collection.deleteMany(Filters.eq("name", "wangxu_java"));
  48. }
  49. }
复制代码

关于Java驱动包的一个疑问

  1. MongoClient mongoClient = new MongoClient("域不存在", 27017); //建立连接
复制代码

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

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-7 07:06

Copyright 2015-2025 djqfx

返回顶部