首页 > 数据库 >Java 操作mongodb的增删改查操作

Java 操作mongodb的增删改查操作

时间:2023-02-23 23:33:36浏览次数:60  
标签:Java 删除 mongodb 改查 System println new Document

MongoDb 非关系型数据库,又称为NoSql(不仅仅是sql),主要是非关系型,分布式,不提供ACID的数据库设计模式。

MongoDB是一种面向文档的数据库管理系统,支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言。

1.需要引入的mongo包

    <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初始化:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] 
    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端口

MongoClient mongoClient = new MongoClient(ip, 端口);

  3.增删改查

新增操作
//插入数据 
Document doc= new Document();       
collection.insertOne(doc);
//批量插入
List<Document> list = new ArrayList<Document>();
list.add(doc);
collection.insertMany(list);

  删除操作。单独删除,批量删除

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” 用来设置一个字段的值。如果这个字段不存在,则创建该字段。这对于更新模式或添加用户定义的键来说非常方便。

 

更新单个字段updateOne

UpdateResult updateOne = currcollection.updateOne(
condition, new Document("$set",new Document("test", "123")),
new UpdateOptions().upsert(true));

更新整个updateMany
currcollection.updateMany(condition, new Document("$set",document));

  查询

        FindIterable<Document> find = collection.find(eq).sort(document);

  

参考:https://blog.csdn.net/m0_65004039/article/details/127058581

标签:Java,删除,mongodb,改查,System,println,new,Document
From: https://www.cnblogs.com/first131/p/17149643.html

相关文章

  • 算法刷题-数字颠倒-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 深入学习java源码之File类
    File类的常用方法①、创建方法1.booleancreateNewFile()不存在返回true存在返回false2.booleanmkdir()创建目录,如果上一级目录不存在,则会创建失......
  • java的数组与Arrays类源码详解
    java的数组与Arrays类源码详解java.util.Arrays类是JDK提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用。类的定义......
  • java的StringBuilder与StringBuffer类源码详解
     java的StringBuilder与StringBuffer类源码详解类的定义abstractclassAbstractStringBuilderimplementsAppendable,CharSequence{char[]value;intcount;......
  • java枚举Enum与Enumeration源码详解
    java枚举Enum与Enumeration源码详解类的定义publicabstractclassEnum<EextendsEnum<E>>implementsComparable<E>,Serializable{}属性定义privatefinalStr......
  • java的Integer类源码详解
    java的Integer类源码详解类的定义publicfinalclassIntegerextendsNumberimplementsComparable<Integer>{@NativepublicstaticfinalintMIN_VALUE=0x800......
  • JavaScript 如何验证 URL
    前言当开发者需要为不同目的以不同形式处理URL时,比如说浏览器历史导航,锚点目标,查询参数等等,我们经常会借助于JavaScript。然而,它的频繁使用促使攻击者利用其漏洞。这种被......
  • Java核心技术读书笔记-输入与输出
    IO流InputStream与OutputStream设计的目的是处理字节流的数据;而Reader和Writer是专门用于处理Unicode字符的类层次结构。read和write方法在执行时都将阻塞,直至字节确实......
  • MyBatis增删改查之添加、修改、删除操作
    一、添加操作Mapper接口voidadd(Brandbrand);SQL语句<insertid="add">insertintotb_brand(brand_name,company_name,ordered,description,status)......
  • java的一个小demo
    publicstaticvoidmain(String[]args){intnum=0;num=num++;System.out.println(num);//0num=++num;Sys......