本文总结来自MongoDB 的java版本的Driver(驱动) api入门指南
官网地址:https://docs.mongodb.org/getting-started/java/client/
MongoDB 一个开源的文档型数据库 ,提供高性能,高可用,自动切片的特性。
准备工作
首先我们需要下载一个MongoDB,我嫌麻烦就下载了一个社区版本,编译好的解压就能用。
curl -O https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-3.2.4.tgz解压启动
tar -zxvf mongodb-osx-x86_64-3.2.4.tgz直接启动./mongod 的话会出现下面的错误,错误中包含下面提示信息
Data directory /data/db not found
这是因为MongoDB 默认会将数据文件放在/data/db下,我们可以指向其他存在的目录,比如说我们在安装目录下保存数据文件
mkdir -p /work/mongodb-osx-x86_64-3.2.4/dbpath
所以接下来我们可以这样启动
./mongod --dbpath /work/mongodb-osx-x86_64-3.2.4/dbpath
代码很简单,直接上代码,重要的地方说明下即可
一、连接
public static void main(String[] args) { String dbName = "myDb"; String collectionName = "myTable"; try { testMongo(dbName, collectionName); } catch (ParseException e) { e.printStackTrace(); } } public static void testMongo(String dbName, String collectionName) throws ParseException { MongoClient mc = new MongoClient("192.168.2.6", 27017); //获取数据库,不用担心之前没有,没有的话会创建一个 MongoDatabase database = mc.getDatabase(dbName); testCollection(database, collectionName); mc.close(); } public static void testCollection(MongoDatabase database, String collectionName) throws ParseException { //获取数据集合,可以理解为一个表,不用担心之前没有,没有的话会创建一个 MongoCollection<Document> collection = database.getCollection(collectionName); insert(collection); find(collection); update(collection); remove(collection); }
二、插入数据
public static void insert(MongoCollection<Document> collection) throws ParseException { collection.drop();// 每次插入前把之前的数据全部删除 DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); collection.insertOne(new Document("address", new Document().append("street", "1 Avenue").append("zipcode", "10075").append("building", "1481") .append("coord", asList(-73.9557413, 40.7720266))) .append("borough", "Manhattan") .append("cuisine", "Italian") .append("grades", asList(new Document().append("date", format.parse("2014-10-01T00:00:00Z")).append("grade", "A").append("score", 12), new Document() .append("date", format.parse("2014-01-16T00:00:00Z")).append("grade", "B").append("score", 13))).append("name", "Vella") .append("restaurant_id", "41704621")); collection.insertOne(new Document("address", new Document().append("street", "2 Avenue").append("zipcode", "10076").append("building", "1482") .append("coord", asList(-73.9557413, 40.7720266))) .append("borough", "Manhattan") .append("cuisine", "Italian") .append("grades", asList(new Document().append("date", format.parse("2014-10-01T00:00:00Z")).append("grade", "A").append("score", 14), new Document() .append("date", format.parse("2014-01-16T00:00:00Z")).append("grade", "C").append("score", 15))).append("name", "Bruce") .append("restaurant_id", "41704622")); collection.insertOne(new Document("address", new Document().append("street", "3 Avenue").append("zipcode", "10077").append("building", "1483") .append("coord", asList(-73.9557413, 40.7720266))) .append("borough", "Manhattan") .append("cuisine", "Italian") .append("grades", asList(new Document().append("date", format.parse("2014-10-01T00:00:00Z")).append("grade", "B").append("score", 16), new Document() .append("date", format.parse("2014-01-16T00:00:00Z")).append("grade", "C").append("score", 17))).append("name", "Aline") .append("restaurant_id", "41704623")); }
三、查找
public static void find(MongoCollection<Document> collection) { /* 查询所有 */ System.out.println("\n 查询所有"); FindIterable<Document> find = collection.find(); find.forEach(getShower()); /* 顶层的查询 ,将整个数据看成一个格式化好的json来理解 */ System.out.println("\n 顶层的查询 ,将整个数据看成一个格式化好的json来理解"); FindIterable<Document> iterable = collection.find(new Document("borough", "Manhattan")); iterable.forEach(getShower()); System.out.println("\n 利用mongo自带的filter来完成查询,和上一个查询等价"); FindIterable<Document> find2 = collection.find(Filters.eq("borough", "Manhattan")); find2.forEach(getShower()); /* 非顶层店查询 */ System.out.println("\n 非顶层的查询 ,将整个数据看成一个格式化好的json来理解"); FindIterable<Document> find3 = collection.find(new Document("address.zipcode", "10075")); find3.forEach(getShower()); System.out.println("\n 利用mongo自带的filter来完成查询,和上一个查询等价"); FindIterable<Document> find4 = collection.find(Filters.eq("address.zipcode", "10075")); find4.forEach(getShower()); System.out.println("\n 非顶层的在某个数组中查询 ,将整个数据看成一个格式化好的json来理解"); FindIterable<Document> find5 = collection.find(new Document("grades.grade", "B")); find5.forEach(getShower()); System.out.println("\n 利用mongo自带的filter来完成查询,和上一个查询等价"); FindIterable<Document> find6 = collection.find(Filters.eq("grades.grade", "B")); find6.forEach(getShower()); /* 自定义查询 */ System.out.println("\n 自定义的查询 利用$gt(great than)"); FindIterable<Document> find7 = collection.find(new Document("grades.score", new Document("$gt", 30))); find7.forEach(getShower()); System.out.println("\n 利用mongo自带的filter.gt 来完成查询,和上一个查询等价"); FindIterable<Document> find8 = collection.find(Filters.gt("grades.score", 30)); find8.forEach(getShower()); System.out.println("\n 自定义的查询 利用$lt(less than)"); FindIterable<Document> find9 = collection.find(new Document("grades.score", new Document("$lt", 15))); find9.forEach(getShower()); System.out.println("\n 利用mongo自带的filter.lt 来完成查询,和上一个查询等价"); FindIterable<Document> find10 = collection.find(Filters.lt("grades.score", 15)); find10.forEach(getShower()); /* 组合查询 */ System.out.println("\n 组合查询 and"); FindIterable<Document> find11 = collection.find(new Document("cuisine", "Italian").append("address.zipcode", "10075")); find11.forEach(getShower()); System.out.println("\n 利用mongo自带的filter.and 来完成组合查询,和上一个查询等价"); FindIterable<Document> find12 = collection.find(Filters.and(Filters.eq("cuisine", "Italian"), Filters.eq("address.zipcode", "10075"))); find12.forEach(getShower()); System.out.println("\n 组合查询 or"); FindIterable<Document> find13 = collection.find(new Document("$or", asList(new Document("cuisine", "Italian"), new Document("address.zipcode", "10075")))); find13.forEach(getShower()); System.out.println("\n 利用mongo自带的filter.or 来完成组合查询,和上一个查询等价"); FindIterable<Document> find14 = collection.find(Filters.or(Filters.eq("cuisine", "Italian"), Filters.eq("address.zipcode", "10075"))); find14.forEach(getShower()); /* 查询后的排序 */ System.out.println("\n 通过在查询的结果集后调用sort来完成排序"); FindIterable<Document> find15 = collection.find().sort(new Document("borough", 1).append("address.zipcode", 1)); find15.forEach(getShower()); System.out.println("\n 利用mongo自带的filter.sort 来完成排序,和上一个查询等价"); FindIterable<Document> find16 = collection.find().sort(Sorts.ascending("borough", "address.zipcode")); find16.forEach(getShower()); }
上面代码中的一些小的工具方法
public static void showall(MongoCollection<Document> collection) { System.out.println("\n 查询所有"); FindIterable<Document> find = collection.find(); find.forEach(getShower()); } public static Block<Document> getShower() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } return new Block<Document>() { public void apply(final Document document) { System.out.println(document); } }; }
四、更新
public static void update(MongoCollection<Document> collection) { /* 更新顶层节点 ,使用了内置函数 $set , $currentDate */ System.out.println("\n更新顶层节点 ,使用了内置函数 $set , $currentDate 更新之前"); showall(collection); collection.updateOne(new Document("name", "Aline"), new Document("$set", new Document("cuisine", "American (New)")).append("$currentDate", new Document("lastModified", true))); System.out.println("更新之后\n"); showall(collection); /* 更新非顶层节点,使用了内置函数 $set */ System.out.println("\n更新非顶层节点,使用了内置函数 $set 更新之前"); showall(collection); collection.updateOne(new Document("restaurant_id", "41704622"), new Document("$set", new Document("address.street", "East 31st Street"))); System.out.println("更新之后\n"); showall(collection); /* 更新多个 ,使用的是append 函数 */ System.out.println("\n更新多个 ,使用的是append ,$set ,$lastModified 函数 更新之前"); showall(collection); collection.updateMany(new Document("address.zipcode", "10075").append("cuisine", "Italian"), new Document("$set", new Document("cuisine", "Category To Be Determined")).append("$currentDate", new Document("lastModified", true))); System.out.println("更新之后\n"); showall(collection); /* 替换 */ System.out.println("\n替换 ,可以理解为通过前面的条件查询到_id,对应的记录然后整个替换这条记录"); showall(collection); collection.replaceOne( new Document("restaurant_id", "41704622"), new Document("address", new Document().append("street", "2 Avenue").append("zipcode", "10075").append("building", "1480") .append("coord", asList(-73.9557413, 40.7720266))).append("name", "Vella 2")); System.out.println("更新之后\n"); showall(collection); }
五、删除
public static void remove(MongoCollection<Document> collection) { /* 删除 */ System.out.println("\n删除符合条件的数据,删除之前的数据如下"); showall(collection); collection.deleteMany(new Document("borough", "Manhattan")); System.out.println("删除之后的数据如下"); showall(collection); System.out.println("\n删除所有数据,删除之前的数据如下"); showall(collection); collection.deleteMany(new Document()); System.out.println("删除之后的数据如下"); showall(collection); System.out.println("\n删除整个集合,包括集合中的数据和索引"); showall(collection); collection.drop(); System.out.println("删除之后的数据如下"); showall(collection); }
六、补上加索引
public static void index(MongoCollection<Document> collection) { System.out.println("\n创建单个索引"); collection.createIndex(new Document("cuisine", 1)); System.out.println("\n创建索引"); collection.createIndex(new Document("cuisine", 1).append("address.zipcode", -1)); }
相关推荐
mongodb-java-driver-4.4.0.jar
为了方便开发者使用 Java 进行开发,MongoDB 提供了官方的 Java 驱动程序(MongoDB Java Driver),使得 Java 应用能够轻松地与 MongoDB 数据库进行交互。 #### 二、基本概念与连接 在开始使用 MongoDB Java Driver...
亲测可用,解压包含三个jar包,引用时sources和doc包根据需要添加。 mongo-java-driver-3.5.0.jar; mongo-java-driver-3.5.0-javadoc.jar; mongo-java-driver-3.5.0-sources.jar;
MongoDB Java Driver是Java开发者用来与MongoDB数据库交互的官方驱动程序。这个源码依赖库包含了一组Java类和接口,使得开发人员能够方便地在应用程序中执行CRUD(创建、读取、更新、删除)操作以及其他高级功能,如...
mongodb_java_driver 已经验证可用!
MongoDB入门指南 MongoDB是一种开源的文档类型数据库,它具有高性能、可扩展、高可用、自动收缩等特性。MongoDB能够避免传统的ORM映射,从而有助于开发。MongoDB中的每一行记录就是一个文档,它是一个由键值对构成...
MongoDB Java驱动是Java开发者与MongoDB数据库交互的重要工具,它允许Java应用程序通过标准的Java API来执行查询、插入、更新和删除等操作。在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在...
MongoDB Java驱动程序是Java开发者用来与MongoDB数据库进行交互的官方库。源码分析将帮助我们深入理解其内部工作原理,优化应用性能,并有可能自定义功能以满足特定需求。以下是对MongoDB Java驱动2.5.3版本源码的...
MongoDB Async Java Driver Documentation Welcome to the MongoDB Async Java driver documentation hub. Getting Started The Getting Started guide contains installation instructions and a simple ...
首先,我们从"MongoDB入门教程"开始。MongoDB采用的是键值对存储方式,数据以JSON格式(BSON)存储,这使得数据的读写更加自然和高效。MongoDB支持丰富的查询语法,包括字段选择、条件操作、排序和分组,为开发者...
mongo-java-driver-3.4.3.jar 是 MongoDB 官方为 Java 开发者提供的 Java 驱动程序的一个特定版本(3.4.3)。这个 JAR 文件包含了与 MongoDB 数据库进行交互所需的类和接口,允许 Java 应用程序连接到 MongoDB 实例...
MongoDB Java驱动API是用于与MongoDB数据库交互的Java库,它是MongoDB官方提供的一个关键组件,使得Java开发者能够方便地在应用程序中存取数据。MongoDB是一个高性能、开源、无模式的文档型数据库,而Java驱动API则...
MongoDB异步驱动程序(mongodb-async-driver)是为Java开发者设计的一个库,它允许应用程序以非阻塞的方式与MongoDB服务器进行通信,提高了处理大量并发请求的能力。 在"mongodb-async-driver-2.0.1.jar"这个特定...
标签:mongodb、driver、sync、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...
使用java 操作mongoDB必须的jar包,
MongoDB入门指南
java和mongodb连接,需要mongodb-driver,您还必须下载其依赖项: bson和 mongodb-driver-core》》3个包: mongodb-driver-3.8.2.jar; bson-3.8.2.jar; mongodb-driver-core-3.8.2.jar
MongoDB Driver for Java 2.5.3是官方提供的用于Java开发者与MongoDB数据库交互的API。这个API允许程序员高效地执行各种操作,包括插入、查询、更新和删除MongoDB中的数据。MongoDB是一个高性能、无模式的文档型...
MongoDB Java Driver 2.11是用于与MongoDB数据库进行交互的Java开发库,它提供了丰富的API,使得Java开发者可以方便地在应用程序中存取和管理MongoDB的数据。MongoDB是一款高性能、分布式、文档型的NoSQL数据库,它...
- `mongo-java-driver-3.4.2.jar`:这是核心的MongoDB Java驱动程序库,包含了所有必要的类和方法,用于在Java应用中连接、查询和操作MongoDB数据库。 - `mongo-java-driver-3.4.2-sources.jar`:这个文件包含驱动...