A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

因为平常用到的都是Mysql关系数据库,所以记录一下使用java对mongodb数据库进行基本操作的方法,便于以后捡起来。

public class UseJavaToMongodb
{
        //mongodb保存的数据和关系数据库不同,保存的是文档类型(bson笔者导出数据到Excel就涉及到了这个格式)
        //与json格式相同,都是键值对信息,比如关系数据库里面保存一个人的信息,表里面有name,age,gender,address等字段
        //在mongodb里面就是一个文档,文档格式就是{"_id":"xxxxxxx","name":"xxx","age":16,"gender":"男","address":"xxxx"}
        //_id这个字段是mongodb自动生成的,为什么mongodb保存数据量很大,但是查询很快,就是因为这个字段,他相当于map里面的键
        //根据这个_id字段可以唯一确定一个文档,同时注意这个_id的类型是ObjectId类型,不是普通的字符串类型
        //mongodb的集合,具体集合需要自己链接获取,这里就不写明了
        private MongoCollection<Document> collection;
       
        //查询
        //一个条件
        BasicDBObject oneCondition = new BasicDBObject();

        oneCondtion.append("_id", new ObjectId("xxxx"));
        collection.find(oneCondition);
       
        //查询
        //多个条件,and或者or
        BasicDBObject conditions = new BasicDBObject();
        BasicDBList conditionList = new BasicDBList();
        BasicDBObject condition1 = new BasicDBObject();
        BasicDBObject condition2 = new BasicDBObject();
        BasicDBObject condition3 = new BasicDBObject();

       
        condition1.append("", "");
        condition2.append("", "");
        condition3.append("", "");
       
        conditionList.add(condition1);
        conditionList.add(condition2);
        conditionList.add(condition3);

        conditions.put("$and", conditionList);
       
        Collection.find(conditions);
       
        //删除一个文档
        Document query = new Document();
        query.put("_id", new ObjectId("xxxx"));
        collection.deleteOne(query);
       
        //保存文档
        Document data = new Document();
       
        data.append("", "")
                .append("", "")
                .append("", "")
                .append("", "")
                .append("", "")
                .append("", "")
                .append("", "")
                .append("", "")
               
        collection.insertOne(data);
       
        //更新一个文档的一个或多个字段
        //查找更新文档的条件(如果根据这个条件找到多条记录,只更新第一个,但是可以设置参数,更新所有的记录)
        Document searchQuery = new Document().append("_id", new ObjectId("xxxxxx"));
        //需要修改的字段和修改之后字段的值都写在这个Document里面
        Document updateDocument = new Document();
        //mongodb更新字段用关键字$set,然后在后面加更新的字段的信息
        //这里注意使用了俩个Document来执行更新命令;
        //如果只用一个Document,把$set和需要更新的所有字段和字段的值全放在一个Document里面,那么最后只会更新一个字段的值,就是最后一个字段的值
        //笔者最开始也遇到了这个坑,目前还没深入了解
        Document updateDocumentAll = new Document();
       
        updateDocument.append("":"")
                                  .append("", "")
                                  .append("", "")
                                  .append("", "")
                                  .append("", "")
                                  .append("", "")
                                  .append("", "")
                                  
        updateDocumentAll.put("$set", updateDocument);
       
        collection.updateOne(searchQuery, updateDocumentAll);
       

    //关于mongodb里面数组形式的获取
    Document exampleDoc = iterator.next();
    Object arrayType = exampleDoc.get("array");

    if (arrayType instanceof List)
    {
        @SuppressWarnings("unchecked")
        List<String> test = (List<String>) arrayType;

    }

    //mongodb嵌套字段的获取,比如一个doc里面有一个info字段,info里面还有其他很多字段,
    //然后获取info里面某个字段的值
    Document testDoc = iterator.next();
    Document secDoc = (Document) testDoc.get("info");
    String testString = secDoc.getString("xxx");


}

---------------------
【转载,仅作分享,侵删】
作者:m0_37872413
原文:https://blog.csdn.net/m0_37872413/article/details/86776112
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

正序浏览
奈斯,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马