最近做项目想用一下NoSQL数据库,由于项目需要保存大量的json数据,我就选了MongoDB作为我的数据库。
最新版为3.0 下载安装都很容易,今天按照教程一步一步实现了增删改查等工作,本文将把要用到的代码都贴上来而且都做好中文注释方便大家阅读。
过程中发现两处不能使用教程中的代码实现的地方,经过查资料已经用另外的方法实现了,不知道是不是叫承重的代码出错了还是什么原因,如果有知道的朋友请留言告诉我,多谢~
官方教程链接:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/
如果不用maven附件中提供了已经下好的java驱动
package com.zhongli.TwitterGetter.app; import java.util.*; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.BasicDBObject; import com.mongodb.Block; import com.mongodb.MongoClient; import com.mongodb.client.*; import com.mongodb.client.model.BulkWriteOptions; import com.mongodb.client.model.DeleteOneModel; import com.mongodb.client.model.InsertOneModel; import com.mongodb.client.model.ReplaceOneModel; import com.mongodb.client.model.UpdateOneModel; import com.mongodb.client.result.DeleteResult; import com.mongodb.client.result.UpdateResult; import static com.mongodb.client.model.Filters.*; /** * 程序入口 * * @author John * */ public class testmain { public static void main(String[] args) { testmain tm = new testmain(); tm.test(); } /** * test */ private void test() { // 获取链接 MongoClient mongoClient = new MongoClient("localhost", 27017); // 获取数据库 MongoDatabase database = mongoClient.getDatabase("mydb"); // 进入某个文档集 MongoCollection<Document> collection = database.getCollection("test"); /********************** 数据插入 ****************************/ // // 创建新文档 // Document doc = new Document("name", "MongoDB") // .append("type", "database").append("count", 1) // .append("info", new Document("x", 203).append("y", 102)); // // 将文档插入文档集合 // collection.insertOne(doc); // // // 创建一个包含多个文档的列表 // List<Document> documents = new ArrayList<Document>(); // for (int i = 0; i < 100; i++) { // documents.add(new Document("i", i)); // } // // 向文档中插入列表 // collection.insertMany(documents); /***************** 数据读取 ****************************************/ // // 显示集合中的文档的数量 // System.out.println(collection.count()); // // // 查询集合中的第一个文档 // Document myDoc = collection.find().first(); // System.out.println(myDoc.toJson()); // // //获取集合中的全部文档 // MongoCursor<Document> cursor = collection.find().iterator(); // try { // while (cursor.hasNext()) { // System.out.println(cursor.next().toJson()); // } // } finally { // cursor.close(); // } // //获取全部文档的另一种方法 // for (Document cur : collection.find()) { // System.out.println(cur.toJson()); // } // // 根据条件获取某分文档 eq:== // Document myDoc = collection.find(eq("i", 71)).first(); // System.out.println(myDoc.toJson()); // 通过查询语句一次性获取多个数据 // Block<Document> printBlock = new Block<Document>() { // @Override // public void apply(final Document document) { // System.out.println(document.toJson()); // } // }; // 获得所有大于50的 // collection.find(gt("i", 50)).forEach(printBlock); // 大于50 小于 100 // collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock); // 对输出文档进行排序,-1为递减,1为递增 // 官方文档的例子有误:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/#sorting-documents // Document myDoc = collection.find(exists("i")) // .sort(new BasicDBObject("i", -1)).first(); // System.out.println(myDoc.toJson()); // 选择性输出结果中的元素,0为不显示,1为显示 // 官方文档中的例子又不能用:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/#projecting-fields // BasicDBObject exclude = new BasicDBObject(); // exclude.append("_id", 0); // // exclude.append("count", 0); // exclude.append("name", 1); // exclude.append("info", 1); // Document myDoc = collection.find().projection(exclude).first(); // System.out.println(myDoc.toJson()); /************************* 修改数据库中数据 *************************************/ // 修改时的参数: // $inc 对指定的元素加 // $mul 乘 // $rename 修改元素名称 // $setOnInsert 如果以前没有这个元素则增加这个元素,否则不作任何更改 // $set 修改制定元素的值 // $unset 移除特定的元素 // $min 如果原始数据更大则不修改,否则修改为指定的值 // $max 与$min相反 // $currentDate 修改为目前的时间 // //修改第一个符合条件的数据 // $set 为修改 // collection.updateOne(eq("i", 10), new Document("$set", new // Document("i", 110))); // // 获取全部文档,可以看到以前10的地方变成了110 // for (Document cur : collection.find()) { // System.out.println(cur.toJson()); // } // 批量修改数据并且返回修改的结果,讲所有小于100的结果都加100 // UpdateResult updateResult = collection.updateMany(lt("i", 100), // new Document("$inc", new Document("i", 100))); // // 显示发生变化的行数 // System.out.println(updateResult.getModifiedCount()); // // 获取全部文档,可以看到除了刚才修改的110其他的全为了100 // for (Document cur : collection.find()) { // System.out.println(cur.toJson()); // } /************************** 删除数据 *****************************/ // 删除第一个符合条件的数据 // collection.deleteOne(eq("i", 110)); // // 获取全部文档,可以看到没有110这个数了 // for (Document cur : collection.find()) { // System.out.println(cur.toJson()); // } // 删除所有符合条件的数据,并且返回结果 // DeleteResult deleteResult = collection.deleteMany(gte("i", 100)); // // 输出删除的行数 // System.out.println(deleteResult.getDeletedCount()); // // 获取全部文档,所有i>=100的数据都没了 // for (Document cur : collection.find()) { // System.out.println(cur.toJson()); // } /*************************** 程序块,一次执行多条语句 ********************************/ // 按照语句先后顺序执行 // collection.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document( // "_id", 4)), new InsertOneModel<>(new Document("_id", 5)), // new InsertOneModel<>(new Document("_id", 6)), // new UpdateOneModel<>(new Document("_id", 1), new Document( // "$set", new Document("x", 2))), new DeleteOneModel<>( // new Document("_id", 2)), // new ReplaceOneModel<>(new Document("_id", 3), new Document( // "_id", 3).append("x", 4)))); // // 获取全部文档 // for (Document cur : collection.find()) { // System.out.println(cur.toJson()); // } // 不按照语句先后顺序执行 // collection.bulkWrite(Arrays.asList(new InsertOneModel<>(new Document( // "_id", 4)), new InsertOneModel<>(new Document("_id", 5)), // new InsertOneModel<>(new Document("_id", 6)), // new UpdateOneModel<>(new Document("_id", 1), new Document( // "$set", new Document("x", 2))), new DeleteOneModel<>( // new Document("_id", 2)), // new ReplaceOneModel<>(new Document("_id", 3), new Document( // "_id", 3).append("x", 4))), new BulkWriteOptions() // .ordered(false)); // 获取全部文档 // for (Document cur : collection.find()) { // System.out.println(cur.toJson()); // } // 关闭数据库连接 mongoClient.close(); } }
相关推荐
spring MVC 5.0M4 MongoDB3.0 log4j2 注解 等等...
本项目以spring4.0+mongodb3.0为基础开发简易demo,对mongodb进行权限认证,简单增删改查,mapreduce,aggregate操作简单演示,java项目,非maven项目,使用之前先配好mongodb及其修改mongodb.properties里参数。
详细描述MongoDB 安装步骤以及中途遇到的问题解决
mongodb 3.0 suse11 64bit 64位 安装包 release 版本 效率提升不是一点点
MongoDBjava各版本驱动下载
近期学习MongoDb 需要查看API,可是官方只能从浏览器查询,没有办法下载,并且程序安装包中也没有docs。让我很是纠结,该文件是我自己爬虫、打包并制作成CHM贡献给大家。
可以试用30天,到期之后运行bat再次试用。注意保存配置
mongoDB中文文档和一个可以运行的dome,其中包括mongoDB索引,管道,事务,集合和crud等基本操作
这是mongdb3.0.8在linux版本的压缩包
Java操作MongoDB实例,压缩包内为完整项目源码,使用MyEclipse软件 见文:https://blog.csdn.net/qq_33427869/article/details/87270444
此资源在mogoDB官网下载,为2016年9月份最新版本,64位。 ...robomongo是作为mogoDB数据库的可视化工具,你可以理解成SQL,MYSQL,里面能用鼠标控制的操作。 该robomongo版本是0.9.0,能支持最新的mongo3.x,...
通过安装当前版本3.0.4的MongoDB,在hpess / chef映像上构建。 具有简单的副本集支持。用根据我们所有其他容器,一个简单的docker compose文件将使您轻松轻松地建立一个实例。 这将启动一个绑定到默认mongo端口的...
主要介绍了使用spring连接及操作mongodb3.0实例,详细的介绍了使用spring的情况下,在java中简单操作mongodb。有兴趣的可以了解一下。
ansible-mongodb Ansible playbook 和用于配置简单 MongoDB(包括 MongoDB 3.0)的示例。 这对于想要深入了解 MongoDB(尤其是 3.0)并能够轻松(重新)创建环境的人们来说(目前)是很好的。要求Ansible (1.8.x) ...
MongoDB Java操作大全 源代码 实例
MongoDB实现增删改查,java程序驱动,复杂查询,源代码示例
MongoDB 3.0 安全权限访问控制,在添加用户上面3.0版本和之前的版本有很大的区别,这里就说明下3.0的添加用户的方法。由于这版本改变的有些大,解决了很久,终于解决,下面把解决的步骤以及思路分享给大家。
Spring Data MongoDB API。 Spring Data MongoDB 开发文档。
mongoDB java driver api mongoDB java 驱动 所有类的api