mongodb java api增删改查

本文详细介绍如何使用Java进行MongoDB数据库的基本操作,包括连接数据库、插入、更新、删除及查询文档等核心功能,同时展示了复杂的查询条件设置和批量更新操作。
package mdb;

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;
import org.bson.Document;

import java.util.ArrayList;
import java.util.List;

public class Mdb {



    public static void main(String[] args) {

        MongoClient m=new MongoClient("192.168.1.104",27017);//连接服务


        MongoDatabase db = m.getDatabase("test");//连接到test数据库
        MongoCollection<Document> student = db.getCollection("student");//拿到student集合

//======插入
        Document document = new Document();
        document.append("name","wangming").append("city","shanghai").append("genner","man").append("job","big data");
        List<Document> doc=new ArrayList<Document>();//创建的docment的数组
        doc.add(document);//添加到集合中
        student.insertMany(doc);//插入多个需要维护一个list数组
        student.insertOne(document);//插入单个则只需一个document

//=======更新文档
        student.updateMany(Filters.eq("name","wangxiaoming"),new Document("$set",new Document("name","xming")));//匹配name为wangixaoming的字段改为xming

//=======删除文档
        student.deleteOne(Filters.eq("name","xming"));//删除符合条件的第一个文档
        student.deleteMany(Filters.eq("name","xming"));//删除符合条件的所有文档

//=======按条件查询遍历表
        FindIterable<Document> documents = student.find();
        for(Document dc:documents){

            System.out.println(dc);//拿到所有的文档
        }

//=======$and equals lte匹配查找
        MongoCursor<Document> st = student.find(Filters.and(Filters.eq("city", "beijing"), Filters.lte("age", 20))).iterator();//先用Filter的和操作 里面写俩个Filter操作 分别是城市等于北京的 年龄小等于20的条件

        while (st.hasNext()){

            Document docnext = st.next();

            if (docnext.containsKey("higher")){//该文档匹配的key 随意一个key就可以

            //    { "_id" : ObjectId("5caa3ed1d99950e42192d662"), "name" : "xiaoan", "age" : 20, "higher" : 18.1, "city" : "beijing", "sal" : 18890 }
                student.updateMany(Filters.eq("_id",docnext.get("_id")),new Document("$inc",new Document("sal",1)));//即匹配id为要搜索条件的id 然后将其工资上涨1
            //    { "_id" : ObjectId("5caa3ed1d99950e42192d662"), "name" : "xiaoan", "age" : 20, "higher" : 18.1, "city" : "beijing", "sal" : 18891 }
            }
        }

//=======批量更新multiply(乘)(错误!)
        student.updateMany(Filters.exists("sal"),new Document("$mul",new Document("sal",2)));//所有包含sal的字段都乘以2
        
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值