Java 操作mongodb的增删改查操作
MongoDb 非关系型数据库,又称为NoSql(不仅仅是sql),主要是非关系型,分布式,不提供ACID的数据库设计模式。
MongoDB是一种面向文档的数据库管理系统,支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言。
1.需要引入的mongo包
1 2 3 4 5 6 7 8 | <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> </dependency> |
2.链接mongo的方式
通过URI初始化:
1 | mongodb: //[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public static void main(String[] args) { //mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] String url = "设置的mongouri信息"; System.out.println(url); MongoClientURI uri = new MongoClientURI(url); MongoClient mongoClient = new MongoClient(uri); System.out.println(mongoClient); //获取库对象 MongoDatabase db = mongoClient.getDatabase( "数据库名" ); MongoCollection<Document> collection = db.getCollection( "需要查询的集合名字" ); FindIterable doc = collection.find( new Document().append( "集合中的字段" , "字段值" )); Iterator iterator = doc.iterator(); while (iterator.hasNext()) { Document result = (Document) iterator.next(); // System.out.println(JSON.toJSONString(result)); Object name = result.get( "name" ); Object text = result.get( "text" ); System.out.println( "aaaa:" +name); System.out.println( "hhhhh:" +text); } //关闭链接 mongoClient.close(); } |
通过ip端口
1 | MongoClient mongoClient = new MongoClient(ip, 端口); |
3.增删改查
新增操作
1 2 3 4 5 6 7 | //插入数据 Document doc= new Document(); collection.insertOne(doc); //批量插入 List<Document> list = new ArrayList<Document>(); list.add(doc); collection.insertMany(list); |
删除操作。单独删除,批量删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | String instanceCollectionName = "集合名" ; MongoCollection<Document> instanceCollection = mongoTemplate.getCollection(instanceCollectionName); //申明删除条件 Bson filter = Filters.eq( "code" , "123" ); //删除与筛选器匹配的单个文档 instanceCollection.deleteOne(filter); //删除表单实例快照 MongoCollection<Document> newColl= mongoTemplate.getCollection( "集合名" ); //申明删除条件 Bson historyFilter = Filters.eq( "code" , "123" ); //删除与筛选器匹配的所有文档 newColl.deleteMany(historyFilter); |
更新操作,单独更新,批量更新
"$set"修饰符
“$set” 用来设置一个字段的值。如果这个字段不存在,则创建该字段。这对于更新模式或添加用户定义的键来说非常方便。
1 2 3 4 5 6 7 | 更新单个字段updateOne UpdateResult updateOne = currcollection.updateOne( condition, new Document( "$set" , new Document( "test" , "123" )), new UpdateOptions().upsert( true )); 更新整个updateManycurrcollection.updateMany(condition, new Document( "$set" ,document)); |
查询
1 2 3 4 5 | List<Bson> filters = new ArrayList<>(); // objectCode条件 filters.add(Filters.eq( "code" , "123" )); Bson condition = Filters.and(filters); FindIterable<Document> doc = collection.find(condition); |
参考:https://blog.csdn.net/m0_65004039/article/details/127058581
https://blog.csdn.net/m0_46420244/article/details/125828629
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2022-02-23 Activiti 7.1.0 实体对象与类和数据库表的映射