Java使用mongodb-driver来操做mongodb
建立新工程
建立新的demo工程,引入MongoDB的jar包的坐标:java
<dependencies> <!--mongo依赖--> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.6.3</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-core</artifactId> <version>3.6.3</version> </dependency> </dependencies>
编写测试代码(普通查询)
在测试包com.cxf.test.MongoTest中,编写以下的测试代码,用于遍历获取全部的数据:mongodb
// 链接mongo服务器 MongoClient mongoClient = new MongoClient("121.36.25.190",27017); // 获取要操做的数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb"); //获得要操做的集合 MongoCollection<Document> mongoCollection = mongoDatabase.getCollection("spit"); //获得集合中的全部文档 FindIterable<Document> findIterable= mongoCollection.find(); //遍历 for (Document document:findIterable) { System.out.println("内容为:"+document.getString("content")); System.out.println("用户id为:"+document.getString("userid")); System.out.println("访问量 :" +document.getInteger("visits")); } mongoClient.close();
默认的数据类型的浮点型,对应了java 的Double类型.
若是是用NumberInt存储的,那么就用java的Integer类型来接收.
若是是用双引号括起来的, 那么就用String类型接收数据库
每一列的数据类型要固定, 不能乱变。
服务器
条件查询
等于条件查询
在测试类的main方法中,添加以下的代码,即表明了只查询userid为1013的数据.
封装了BasicDBObject 对象中, 把这个对象传递到find方法中,即表明了条件查询测试
//封装查询的条件 BasicDBObject basicDb = new BasicDBObject("userid", "1013"); //获得集合中的全部文档 FindIterable<Document> findIterable= mongoCollection.find(basicDb);
完整的代码:this
/** * @description: * @author:柴新峰 * @create:2020/9/7 */ public class MongoTest { public static void main(String[] args) { // 链接mongo服务器 MongoClient mongoClient = new MongoClient("121.36.25.190",27017); // 获取要操做的数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb"); //获得要操做的集合 MongoCollection<Document> mongoCollection = mongoDatabase.getCollection("spit"); //封装查询的条件 BasicDBObject basicDb = new BasicDBObject("userid", "1013"); //获得集合中的全部文档 FindIterable<Document> findIterable= mongoCollection.find(basicDb); //遍历 for (Document document:findIterable) { System.out.println("内容为:"+document.getString("content")); System.out.println("用户id为:"+document.getString("userid")); System.out.println("访问量 :" +document.getInteger("visits")); } mongoClient.close(); } }
结果输出:
spa
大于条件查询
查询访问量大于1000的数据
若是用命令来查询大于1000的数据,那么命令以下code
db.spit.find({visits:{$gt:1000}})
能够看到是用两个{}的,所以在代码中,就对应了两个BasicDBObject 对象
代码以下
在BasicDBObject对象中嵌套一个BasicDBObject,嵌套的对象用于写入大于的条件。
完整代码以下:对象
package com.tensquare; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; /** * @description: * @author:柴新峰 * @create:2020/9/7 */ public class MongoTest { public static void main(String[] args) { // 链接mongo服务器 MongoClient mongoClient = new MongoClient("121.36.25.190",27017); // 获取要操做的数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb"); //获得要操做的集合 MongoCollection<Document> mongoCollection = mongoDatabase.getCollection("spit"); //封装查询的条件 BasicDBObject basicDb = new BasicDBObject("visits", new BasicDBObject("$gt",1000)); //获得集合中的全部文档 FindIterable<Document> findIterable= mongoCollection.find(basicDb); //遍历 for (Document document:findIterable) { System.out.println("内容为:"+document.getString("content")); System.out.println("用户id为:"+document.getString("userid")); System.out.println("访问量 :" +document.getInteger("visits")); System.out.println("****************************************************"); } mongoClient.close(); } }
结果输出:
图片
添加数据到mongo中
经过查看Document的源码,发现其构造方法能够传入一个map,所以经过 map来封装插入的数据.
源码以下:
public Document() { this.documentAsMap = new LinkedHashMap(); } public Document(String key, Object value) { this.documentAsMap = new LinkedHashMap(); this.documentAsMap.put(key, value); } public Document(Map<String, Object> map) { this.documentAsMap = new LinkedHashMap(map); }
完整代码以下:
package com.tensquare; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import java.util.HashMap; import java.util.Map; /** * @description: * @author:柴新峰 * @create:2020/9/7 */ public class MongoTest { public static void main(String[] args) { // 链接mongo服务器 MongoClient mongoClient = new MongoClient("121.36.25.190", 27017); // 获取要操做的数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb"); //获得要操做的集合 MongoCollection<Document> mongoCollection = mongoDatabase.getCollection("spit"); Map<String, Object> map = new HashMap<String, Object>(); map.put("_id", "9"); map.put("content", "测试mongo的添加"); map.put("userid", "1"); map.put("visits", "5000"); Document documentMap = new Document(map); //spit为操做的集合,至关于操做的表 mongoCollection.insertOne(documentMap); //获得集合中的全部文档 FindIterable<Document> findIterable = mongoCollection.find(); //遍历 for (Document document : findIterable) { System.out.println("内容为:" + document.getString("content")); System.out.println("用户id为:" + document.getString("userid")); System.out.println("访问量 :" + document.getInteger("visits")); System.out.println("****************************************************"); } mongoClient.close(); } }
结果以下: