3. mongodb Java编写代码操作

目录

  • 0. 默认使用Maven
  • 1. 代码

0. 默认使用Maven

<!-- https://mvnrepository.com/artifact/org.mongodb/mongodb-driver -->
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.10.2</version>
</dependency>

1. 代码

package com.chenwen;

import com.mongodb.BasicDBObject;
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.InsertOneModel;
import com.mongodb.client.model.UpdateManyModel;
import com.mongodb.client.model.WriteModel;
import org.bson.BasicBSONObject;
import org.bson.Document;
import org.junit.Before;
import org.junit.Test;

import java.util.*;

/**
 * TestMongodb
 *
 * @author chenwen
 * @desc
 * @Date 2019/7/29 11:25
 */
public class TestMongodb {

    private MongoCollection<Document> mongoCollection;
    private Random random = new Random();

    @Before
    public void init() {
        MongoClient mongoClient = new MongoClient("192.168.255.157", 27017);
        MongoDatabase database = mongoClient.getDatabase("test");
        mongoCollection = database.getCollection("col");
    }

    /**
     *
     * 插入单条
     *
     */
    @Test
    public void testInsertOne() {
        Document document = new Document();
        document.append("userId",0);
        document.append("userName", "test0");
        document.append("age", 12);
        document.append("birthday", new Date());
        mongoCollection.insertOne(document);
    }

    /**
     *
     * 简单查询
     *
     */
    @Test
    public void testSimpleQuery() {
        BasicDBObject basicDBObject = new BasicDBObject();
        Calendar instance = Calendar.getInstance();
        instance.setTime(new Date());
        instance.set(Calendar.HOUR_OF_DAY, 12);
        Date time = instance.getTime();
        // 虽然mongodb是UTC时间, 但你传Date类型进行查询, 他会自动转换的;
        basicDBObject.append("birthday", new BasicBSONObject("$gt", time));
        FindIterable<Document> documents = mongoCollection.find(basicDBObject);
        MongoCursor<Document> iterator = documents.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next().toJson());
        }
    }

    /**
     *
     * 批量插入
     *
     */
    @Test
    public void testInsertMany() {
        List<Document> documents = new ArrayList<>();

        for (int i = 0; i < 100; i++) {
            Document document = new Document();
            document.append("userId",i);
            document.append("userName", "test" + i);
            document.append("age", random.nextInt(30));
            document.append("birthday", new Date());
            documents.add(document);
        }

        mongoCollection.insertMany(documents);
    }

    /**
     * 删除全部
     */
    @Test
    public void testDelete() {
        // db.collection.remove({});
        BasicDBObject basicDBObject = new BasicDBObject();
        mongoCollection.deleteMany(basicDBObject);
    }

    /**
     *
     * 批量操作
     *
     */
    @Test
    public void bulkWrite() {

        List<WriteModel<Document>> writeModels = new ArrayList<>();
        // 插入
        Document document = new Document();
        document.append("test", 1);
        InsertOneModel insertOneModel = new InsertOneModel(document);
        writeModels.add(insertOneModel);

        // 修改
        Document query = new Document("test", 1);
        Document update = new Document("$set", new Document("test", 3));
        UpdateManyModel updateManyModel = new UpdateManyModel(query, update);
        writeModels.add(updateManyModel);

        mongoCollection.bulkWrite(writeModels);
    }

}

## 3. 驱动工作原理
所有的mongodb驱动都执行三个主要的功能:
- 1. 生成mongodb对象的Id, 默认存储在所有文档的_id字段.
- 2. 驱动会把任意的语言表示的文档对象转换为BSON或者从BSON转换回来.
- 3. 使用Mongodb的自定义协议的TCP Socket连接与数据库通信.

_id 结构: 4B时间 + 机器ID + 进程ID + 计数器
在驱动生成_id的好处之一就是防止自增主键使MongoDB产生性能瓶颈. 

原文地址:https://www.cnblogs.com/unclecc/p/11268359.html

时间: 2024-11-06 20:37:22

3. mongodb Java编写代码操作的相关文章

不使用spring的情况下用java原生代码操作mongodb数据库的两种方式

由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置文件的密码,而实际上这个密码在代码中根本就没有使用,他们在代码中已经把用户验证信息写死.   在协助他们解决这个问题的时候,我看到他们代码中在和mongodb数据库交互时使用了已经不被建议使用的方法,于是便抽时间尝试了一下另一种被建议的方式实现各功能.   当然了,生产环境中用的是mongodb集群

jquery.cookie.js &amp;&amp; java后台代码 操作cookie实现记住当前用户输入信息代码

下载jquery.cookie.js地址看这里:http://pan.baidu.com/s/1gdCPaN5 //初始化页面时验证是否记住了密码 $(document).ready(function() {   if ($.cookie("rmbUser") == "true") { //判断上次登陆是否已记住密码 $("#rmbUser").attr("checked", true); //设置记住密码复选框选中 //$.

mongoDB Java SDK CRUD操作例子

Example: package com.sdfwerwer.test; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; i

编写高质量JAVA程序代码的建议

--------------------------------------------------------------------------------------------------- 前言:原著<改善JAVA程序的151个建议>有151个建议,我在拜读的过程根据自己的理解合并了其中的几个,并将每个建议的核心要义进行了一次纯手工提炼,以方便想阅读这本书的同行能够更快的掌握这本书的所有核心内容. -------------------------------------------

java目录相关操作 示例代码

package org.rui.io; import java.io.File; import java.io.FilenameFilter; import java.util.Arrays; import java.util.regex.Pattern; /** * 目录列表器 测试 * * @author lenovo * */ //Args:"C:/Users/lenovo/Pictures/screen/*\.jpg" public class DirList { public

在Jmeter中使用自定义编写的Java测试代码

分类: 测试工具 2007-01-19 15:02 8204人阅读 评论(3) 收藏 举报 测试javaloadrunner编译器importtemplates 我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","Java Vuser"等协议.同样,Jmeter也支持自定义编写的测试代码,不过与LoadRunner不同的是,Jmeter没有自带编译器,需要借助

Java代码操作zookeeper

以下为一个完整JAVA操作Zookeeper项目步骤: 1. 项目中pom.xml中添加需要的依赖jar包信息 <dependencies> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version> </dependency> <

使用java代码操作redis

使用java代码操作redis 查询中使用redis逻辑 redis在增删改查中的使用 1. Java访问redis 2.1 添加依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> 2.2 Java连接redis Jedis j

使用Java代码操作 Redis

使用Java代码操作 RedisJedis简介实际开发中,我们需要用Redis的连接工具连接Redis然后操作Redis,对于主流语言,Redis都提供了对应的客户端:提供了很多客户端 官方推荐的是Jedis 托管地址:https://github.com/xetorthio/jedis 要使用redis首先得下载pom依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis<