MongoDB 3.X JAVA基本操作
对Collection的操作
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import org.bson.Document; import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.mongodb.client.model.BulkWriteOptions;
import com.mongodb.client.model.DeleteOneModel;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.InsertOneModel;
import com.mongodb.client.model.Projections;
import com.mongodb.client.model.ReplaceOneModel;
import com.mongodb.client.model.Sorts;
import com.mongodb.client.model.UpdateOneModel;
import com.mongodb.client.model.WriteModel; import static com.mongodb.client.model.Filters.gt; /***/
import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Filters.and;
import static com.mongodb.client.model.Filters.lt; public class MongoDBJDBC { @SuppressWarnings("resource")
public static void main(String[] args) {
try {
/** 直接登录 */
// To directly connect to a single MongoDB server.
// (this will not auto-discover the primary even if it's a member of a replica set)
/*
MongoClient mongoClient = new MongoClient("192.168.253.10", 27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("dsp");
System.out.println("Connect to database successfully!");
*/ /** 使用URI连接信息连接 */
/*
MongoClientURI connectionString = new MongoClientURI("mongodb://192.168.253.10:27017,192.168.253.20:27018,192.168.253.30:27019");
MongoClient mongoClient = new MongoClient(connectionString);
*/ /** Replica Set 认证登录 */
// to connect to a replica set, with auto-discovery of the primary, supply a seed list of members
// 数据库URI(两个参数分别为:服务器地址、端口)
ServerAddress serverAddress = new ServerAddress("192.168.253.10", 27017);
List<ServerAddress> addressList = new ArrayList<ServerAddress>();
addressList.add(serverAddress);
// 认证信息(三个参数分别为:用户名、数据库名称、密码)
MongoCredential credential = MongoCredential.createScramSha1Credential("dsp", "dsp", "shi".toCharArray());
List<MongoCredential> credentialList = new ArrayList<MongoCredential>();
credentialList.add(credential);
// 根据URI和认证信息获取数据库连接
MongoClient mongoClient = new MongoClient(addressList, credentialList); /** 切换数据库 */
MongoDatabase mongoDatabase = mongoClient.getDatabase("dsp");
/** 切换到需要操作的集合 */
MongoCollection collection = mongoDatabase.getCollection("col"); /** 插入文档 */
// 创建文档 org.bson.Document对象,参数为K:V格式
// 创建文档集合List<Document>
// 将文档集合插入数据库集合中collection.insertMany(List<Document>),插入单个文档可以用collection.insertOne(Document)
/*
List<Document> docList = new ArrayList<Document>();
for (int idx = 0; idx < 10; ++idx) {
Document doc = new Document("title", "MongoDB" + idx).
append("desc", "数据库" + idx).
append("likes", 100 + idx * 10).
append("by", "dsp" + idx);
docList.add(doc);
}
collection.insertMany(docList);
*/ /** 更新文档 */
/*
UpdateResult updateResult = collection.updateMany(and(gt("likes", 90), lt("likes", 110)), new Document("$set", new Document("likes", 30)));
updateResult.getMatchedCount();
updateResult.getUpsertedId();
updateResult.getModifiedCount();
*/ /** 删除文档 */
/*
DeleteResult deleteResult = collection.deleteMany(Filters.eq("likes", 30));
System.out.println("本次删除 " + deleteResult.getDeletedCount() + " 条记录!");
*/ /** 检索文档 */
/*
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
try {
while (mongoCursor.hasNext()) {
System.out.println(mongoCursor.next().toJson());
}
} finally {
mongoCursor.close();
}
*/ // 查询过滤器
/*
Document myDoc = (Document) collection.find(eq("likes", 10)).first();
System.out.println(myDoc.toJson());
*/ /** 使用范围查询获取一个较大的子集 */
Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(Document doc) {
System.out.println(doc.toJson());
}
};
// 过滤 likes > 10
// collection.find(gt("likes", 10)).forEach(printBlock);
// 过滤 10 <= likes <= 100
// collection.find(and(Filters.gte("likes", 10), Filters.lte("likes", 100))).forEach(printBlock); /** 排序 */
// collection.find(Filters.exists("likes")).sort(Sorts.descending("likes")).limit(2).forEach(printBlock); /** Projection */
// Document myDoc = (Document) collection.find().projection(Projections.excludeId()).first();
// System.out.println(myDoc.toJson()); /** ordered bulk writes */
List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
writes.add(new InsertOneModel<Document>(new Document("_id", 13)));
writes.add(new InsertOneModel<Document>(new Document("_id", 14)));
writes.add(new InsertOneModel<Document>(new Document("_id", 15)));
writes.add(new UpdateOneModel<Document>(new Document("_id", 10), new Document("$set", new Document("x", 101010))));
writes.add(new DeleteOneModel<Document>(new Document("_id", 11)));
writes.add(new ReplaceOneModel<Document>(new Document("_id", 12), new Document("_id", 12).append("x", 121212)));
// bulkWrite默认BulkWriteOptions
// collection.bulkWrite(writes);
// collection.find().forEach(printBlock);
//
// collection.bulkWrite(writes, new BulkWriteOptions().ordered(false));
// collection.find().forEach(printBlock); /** drop集合 */
// collection.drop(); /** drop数据库 */
// mongoDatabase.drop();
} catch (Exception e) {
System.err.println(e.getClass().getName() + " : " + e.getMessage());
} finally {
// 防止意外,关闭数据库连接
// mongoClient.close();
}
} }
参考:
https://github.com/mongodb/mongo-java-driver/blob/3.0.x/driver/src/examples/tour/QuickTour.java
http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
:)
MongoDB 3.X JAVA基本操作的更多相关文章
- 4.0.3的mongodb 安装和java使用
一 整合 由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的github项目地址 https://github.com/247292980/spring- ...
- hbase的Java基本操作
hbase的Java基本操作 建表,建列簇操作 private static Connection connection; private static Admin admin; public sta ...
- MongoDB的ObjectId和基本操作增删改查(3)
ObjectId 基本操作增删改查 增: insert 介绍: mongodb存储的是文档,. 文档是json格式的对象. 语法: db.collectionName.insert(document) ...
- MongoDB的安装和基本操作
一.使用前的准备(windows下的安装) 1.下载 目前MongoDB的官网不知道问什么不能进行下载了,但是可以在MongoDB中文论坛进行下载, 地址如下:http://www.mongoing ...
- 【MongoDB数据库】Java MongoDB CRUD Example
上一页告诉我们MongoDB 命令入门初探,本篇blog将基于上一篇blog所建立的数据库和表完毕一个简单的Java MongoDB CRUD Example.利用Java连接MongoDB数据库,并 ...
- MongoDB文档的基本操作
1. MongoDB的安装方法 (1)下载MongoDB 相应的版本: (2)设置数据文件和日志文件的存放目录: (3)启动MongoDB服务: (4)将MongoDB作为服务启动. 2. Mongo ...
- MongoDB分页的Java实现和分页需求的思考
前言 传统关系数据库中都提供了基于row number的分页功能,切换MongoDB后,想要实现分页,则需要修改一下思路. 传统分页思路 假设一页大小为10条.则 //page 1 1-10 //pa ...
- 学习MongoDB 七: MongoDB索引(索引基本操作)(一)
一.简介 在MongoDB建立索引能提高查询效率,只需要扫描索引只存储的这个集合的一小部分,并只把这小部分加载到内存中,效率大大的提高,如果没有建立索引,在查询时,MongoDB必须执行全表扫描,在数 ...
- Java操作Mongodb 保存/读取java对象到/从mongodb
从http://central.maven.org/maven2/org/mongodb/mongo-java-driver/选择一个版本进行下载,这里选择的是3.0.0版本,具体下载以下jar包: ...
随机推荐
- vue实现点击区域外部的区域,关闭该区域
var _this = this; document.addEventListener('click',function(e){ console.log(_this.$refs.configforms ...
- Beginning SDL 2.0(4) YUV加载及渲染
本文主要内容是基于的“Beginning SDL 2.0(3) SDL介绍及BMP渲染”(以下简称BS3)基础上,将BMP加载及渲染修改为YUV420或I420的原始视频格式.阅读完本部分内容相信你可 ...
- 获取控制台窗口句柄GetConsoleWindow
在创建direct 3D对象时需要一个窗口句柄,在命令行程序中又不想调用windows api创建窗口对象,所以尝试查找控制台下有无可用并且有效的窗口句柄.找了一下,函数原型如下: HWND WINA ...
- C#数组 添加元素
例1: string[] a = new string[] { "1", "2", "3" }; 给a追加一个 "4" ...
- 【Linux】linux下gzip的压缩/解压缩详解
Linux压缩保留源文件的方法: gzip –c filename > filename.gz Linux解压缩保留源文件的方法: gunzip –c filename.gz > file ...
- 虚拟机三种网络模式详解(Bridge,Nat,Host-only)
虚拟机网络模式 无论是vmware,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3.Host-Only 初学者看到虚拟机有三种网络 ...
- JavaScript高级 面向对象(12)--引用类型值类型作为参数传递的特性
说明(2017-4-2 18:27:11): 1. 作为函数的参数,就是将函数的数据拷贝一份,传递给函数的定义中的参数. 函数foo()在调用的时候,做了两件事: (1)函数在调用的时候,首先需要将参 ...
- json数据在前端(javascript)和后端(php)转换
学习目的:前后端数据交换 思路: json数据格式是怎么样? 后端各种语言怎么将自己内容转换成json格式的内容? 前端怎么接收json数据?有几种方式? js中怎么将json数据转换成js中的数 ...
- Medium开发团队谈架构设计_转
转自:Medium开发团队谈架构设计 背景 说到底,Medium是个社交网络,人们可以在这里分享有意思的故事和想法.据统计,目前累积的用户阅读时间已经超过14亿分钟,合两千六百年. 我们支持着每个月两 ...
- docker 运行redis
自从接触docker之后,很多软件都想着用docker运行,毕竟手动安装的话老是要配一些环境变量啊,找配置文件修改配置什么的,docker却有更简便的办法. 正题: 建一个docker应用容器可以通过 ...