Java操作mongoDB

一、准备工作

1、开发环境:

SystemWindows

IDEeclipseMyEclipse 8

DatabasemongoDBLinux

2、开发依赖库:

jar包:

      mongodb-driver-3.9.0.jar    #mongodb驱动包

      bson-3.9.0.jar      #mongodb核心依赖包

      mongodb-driver-core-3.9.0.jar    # mongodb核心依赖包

      junit-4.12.jar    #单元测试

 

maven

<dependencies>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongodb-driver</artifactId>
        <version>3.9.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

3、首先,下载mongoDB对Java支持的驱动包

驱动包下载地址:https://mongodb.github.io/mongo-java-driver/

mongoDBJava的相关支持、技术:http://www.mongodb.org/display/DOCS/Java+Language+Center

驱动源码下载:https://download.github.com/mongodb-mongo-java-driver-r2.6.1-7-g6037357.zip

在线查看源码:https://github.com/mongodb/mongo-java-driver

 

二、Java操作MongoDB示例

在本示例之前你需要启动mongod.exe的服务,启动后,下面的程序才能顺利执行;

1、建立SimpleTest.java,完成简单的mongoDB数据库操作

1.1、新建数据库连接对象

MongoClient mongoclient = new MongoClient("192.168.25.141", 27017);    //获取连接

这样就创建了一个MongoDB的数据库连接对象,它默认连接到192.168.25.134地址,端口是27017

1.2、获取数据库链接

MongoDatabase database = mongoclient.getDatabase("mydb");    //获取数据库

这样就获得了一个mydb数据库,如果mongoDB中没有创建这个数据库也是可以正常运行的。mongoDB可以在没有创建这个数据库的情况下,完成数据的添加操作。当添加的时候,没有这个库,mongoDB会自动创建当前数据库。

1.3、获取一个“聚集集合DBCollection”

MongoCollection<Document> collection = database.getCollection("user");    //获取集合

这样就获得了一个DBCollection,它相当于我们数据库的

1.4、查询所有数据

//取数据
@Test
public void demo01(){
	MongoClient mongoclient = new MongoClient("192.168.25.141", 27017);    //获取连接
	MongoDatabase database = mongoclient.getDatabase("mydb");    //获取数据库
	MongoCollection<Document> collection = database.getCollection("user");    //获取集合
	FindIterable<Document> users = collection.find();    //查找集合中全部数据
	MongoCursor<Document> iterator = users.iterator();    //获取迭代器
	while (iterator.hasNext()) {
		Document document = iterator.next();    //获取下一条记录
		System.out.println(document);    //
		/*String name = (String)document.get("name");    //获取记录中的字段
		System.out.println(name);*/
	}
	mongoclient.close();
}

 

1.5、 添加操作

//添加一条String记录
@Test
public void demo02(){
	MongoClient mongoclient = new MongoClient("192.168.25.141", 27017);
	MongoDatabase database = mongoclient.getDatabase("mydb");
	MongoCollection<Document> collection = database.getCollection("user");
	collection.insertOne(new Document("mane", "李四"));
	mongoclient.close();
}

//添加一条String记录(多个字段),相当于Map集合,插入Map集合推荐用此方法
@Test
public void demo03(){
	MongoClient mongoclient = new MongoClient("192.168.25.141", 27017);
	MongoDatabase database = mongoclient.getDatabase("mydb");
	MongoCollection<Document> collection = database.getCollection("user");
	Document document = new Document("name", "王五").append("age", 25).append("sex", "男"); 
	collection.insertOne(document); 
	mongoclient.close();
}

//添加一条map记录
@Test
public void demo04(){
	MongoClient mongoclient = new MongoClient("192.168.25.141", 27017);
	MongoDatabase database = mongoclient.getDatabase("mydb");
	MongoCollection<Document> collection = database.getCollection("user");
	HashMap<String, Object> user = new HashMap<String, Object>();
	user.put("name", "李四");
	user.put("age", 23);
	user.put("sex", "女");
	collection.insertOne(new Document(user)); 
	mongoclient.close();
}

//添加多条记录
@Test
public void demo05(){
	MongoClient mongoclient = new MongoClient("192.168.25.141", 27017);
	MongoDatabase database = mongoclient.getDatabase("mydb");
	MongoCollection<Document> collection = database.getCollection("user");
	Document doc1 = new Document("name", "田六").append("age", 25).append("sex", "女"); 
	Document doc2 = new Document("name", "孙七").append("age", 28).append("sex", "女"); 
	Document doc3 = new Document("name", "钱八").append("age", 19).append("sex", "男"); 
	List<Document> documents = new ArrayList<Document>();
	documents.add(doc1);
	documents.add(doc2);
	documents.add(doc3);
	collection.insertMany(documents); 
	mongoclient.close();
}

 

1.6、 修改数据

//修改一条记录
@Test
public void demo06(){
	MongoClient mongoclient = new MongoClient("192.168.25.129", 27017);
	MongoDatabase database = mongoclient.getDatabase("mydb");
	MongoCollection<Document> collection = database.getCollection("user");
	UpdateResult updateOne = collection.updateOne(Filters.eq("name", "张三"), new Document("$set", new Document("name", "李四new")));    //只修改匹配到的第一条
	System.out.println(updateOne); 
	mongoclient.close();
}

//修改多条记录
@Test
public void demo07(){
	MongoClient mongoclient = new MongoClient("192.168.25.129", 27017);
	MongoDatabase database = mongoclient.getDatabase("mydb");
	MongoCollection<Document> collection = database.getCollection("user");
	collection.updateMany(Filters.eq("name", "李四"), new Document("$set", new Document("name", "李四new")));
	mongoclient.close();
}

 

1.7、 删除数据

//删除一条记录
@Test
public void demo08(){
	MongoClient mongoclient = new MongoClient("192.168.25.141", 27017);
	MongoDatabase database = mongoclient.getDatabase("mydb");
	MongoCollection<Document> collection = database.getCollection("user");
	DeleteResult deleteOne = collection.deleteOne(Filters.eq("name", "李四new"));//只删除匹配到的第一条
	System.out.println(deleteOne); 
	mongoclient.close();
}

//删除多条记录
@Test
public void demo09(){
	MongoClient mongoclient = new MongoClient("192.168.25.141", 27017);
	MongoDatabase database = mongoclient.getDatabase("mydb");
	MongoCollection<Document> collection = database.getCollection("user");
	DeleteResult deleteOne = collection.deleteMany(Filters.eq("name", "李四new"));
	System.out.println(deleteOne); 
	mongoclient.close();
}

 

1.8、条件查询

//条件查询
@Test
public void demo10(){
	MongoClient mongoclient = new MongoClient("192.168.25.128", 27017);
	MongoDatabase database = mongoclient.getDatabase("mydb");
	MongoCollection<Document> collection = database.getCollection("user");
	
	//查询id = 5c64d3cdeea71a1bd8d9c8c4,这里只取查处的第一条,遍历多条请参见demo01();
	System.out.println("查询id=5c64d3cdeea71a1bd8d9c8c4: " + collection.find(new BasicDBObject("_id", new ObjectId("5c64d3cdeea71a1bd8d9c8c4"))).first());
	
	//查询age = 24,这里只取查处的第一条,遍历多条请参见demo01();
	System.out.println("查询age=24: " + collection.find(new BasicDBObject("age", 24)).first());
	
	//查询age >= 24,这里只取查处的第一条,遍历多条请参见demo01();
	System.out.println("查询age>=24: " + collection.find(new BasicDBObject("age", new BasicDBObject("$gte", 24))).first());
	System.out.println("查询age<=24: " + collection.find(new BasicDBObject("age", new BasicDBObject("$lte", 24))).first());
	System.out.println("查询age!=24:" + collection.find(new BasicDBObject("age", new BasicDBObject("$ne", 25))).first());
	
	System.out.println("\r\n查询age in {19, 21, 24}:");
	FindIterable<Document> findIterable = collection.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.IN, new int[] {19, 21, 24})));
	MongoCursor<Document> iterator = findIterable.iterator();
	while (iterator.hasNext()) {
		Document document = iterator.next();
		System.out.println(document);
	}
	
	System.out.println("\r\n查询age not in {19, 21, 24}:" );
	FindIterable<Document> findIterable2 = collection.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.NIN, new int[] {19, 21, 24})));
	MongoCursor<Document> iterator2 = findIterable2.iterator();
	while (iterator2.hasNext()) {
		Document document = iterator2.next();
		System.out.println(document);
	}
	
	System.out.println("\r\n查询存在age字段的:");
	FindIterable<Document> findIterable3 = collection.find(new BasicDBObject("sex", new BasicDBObject(QueryOperators.EXISTS, true)));
	MongoCursor<Document> iterator3 = findIterable3.iterator();
	while (iterator3.hasNext()) {
		Document document = iterator3.next();
		System.out.println(document);
	}
	
	System.out.println("\r\n查询不存在age字段的:");
	FindIterable<Document> findIterable4 = collection.find(new BasicDBObject("sex", new BasicDBObject(QueryOperators.EXISTS, false)));
	MongoCursor<Document> iterator4 = findIterable4.iterator();
	while (iterator4.hasNext()) {
		Document document = iterator4.next();
		System.out.println(document);
	}
	 
	//只查询一条数据,并且查询之后删除该数据
	System.out.println("只查询一条数据,并且查询之后删除该数据: " + collection.findOneAndDelete(new BasicDBObject("name", "李四new")));
	
	//只查询一条数据,并且查询之后替换该数据(删除原来所有key/value,并插入新key/value)
	System.out.println("只查询一条数据,并且查询之后替换该数据: " + collection.findOneAndReplace(new BasicDBObject("name", "李四"), new Document("name", "李四new").append("age", 15).append("sex", "女")));
	
	//只查询一条数据,并且查询之后修改该数据(修改指定的key/value)
	System.out.println("只查询一条数据,并且查询之后修改该数据: " + collection.findOneAndReplace(new BasicDBObject("name", "李四new"), new Document("age", 100)));
	
	mongoclient.close();
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RainingTime

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值