mongodb java代码_3. mongodb Java编写代码操作

0. 默认使用Maven

org.mongodb

mongodb-driver

3.10.2

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 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 documents = mongoCollection.find(basicDBObject);

MongoCursor iterator = documents.iterator();

while(iterator.hasNext()) {

System.out.println(iterator.next().toJson());

}

}

/**

*

* 批量插入

*

*/

@Test

public void testInsertMany() {

List 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> 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驱动都执行三个主要的功能:

生成mongodb对象的Id, 默认存储在所有文档的_id字段.

驱动会把任意的语言表示的文档对象转换为BSON或者从BSON转换回来.

使用Mongodb的自定义协议的TCP Socket连接与数据库通信.

_id 结构: 4B时间 + 机器ID + 进程ID + 计数器

在驱动生成_id的好处之一就是防止自增主键使MongoDB产生性能瓶颈.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值