java 操作mongodb的增删查改 crud

本文介绍如何使用Java进行MongoDB的基本操作,包括连接数据库、插入数据、查询数据、更新数据、删除数据以及聚合操作等,并提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先需要搭建mongodb的服务,这个先略过吧~~

需要导入两个jar包mongo-java-driver-2.10.1.jar , gson-2.3.1.jar 



以下是用来测试,mongodbdb是否能连接得上

package com.zwy.mongo;

import java.net.UnknownHostException;

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;



public class MongoDB {
	public static void main(String[] args) throws UnknownHostException {
		//连接mogodb服务器
		Mongo mg = new Mongo("192.168.23.128", 27017);
		//获取所有数据库
		for (String name : mg.getDatabaseNames()) {
			System.out.println("dbName: " + name);
		}
		//获取单个数据库
		DB db = mg.getDB("test");
		// 查询所有的聚集集合
		for (String name : db.getCollectionNames()) {
			System.out.println("collectionName: " + name);
		}
		//获取集合(相当于表)
		DBCollection users = db.getCollection("books");

		// 查询所有的数据
		DBCursor cur = users.find();
		while (cur.hasNext()) {
			DBObject obj  = cur.next();
			System.out.println(obj);			
			System.out.println(obj.get("pages"));
		}
		System.out.println(cur.count());
		System.out.println(cur.getCursorId());
		//System.out.println(JSON.serialize(cur));
	}
}


mongodb的增删查改,以及group 操作
package com.zwy.mongo;

import java.net.UnknownHostException;
import java.util.ArrayList;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.GroupCommand;
import com.mongodb.Mongo;
/*修改自己的服务器ip*/
public class MongoDBCRUD {
	public static Mongo mg ;
	public static DB db ;
	public static void init(){
		//连接mogodb服务器
		try {
			mg = new Mongo("192.168.23.128", 27017);
			db = mg.getDB("zwy");
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
	}
	/*insert into person (name,age) values ('zwy*',1)*/
	public static void insert() {
		DBCollection table = db.getCollection("person");
		for(int i = 0 ; i < 10000 ; i++) {
			DBObject obj = new BasicDBObject();
			obj.put("name", "zwy" + i);
			obj.put("age", Math.floor(Math.random() * i  )%50);		
			obj.put("sex", i % 2);	
			table.insert(obj);
		}	
		
	}
	/*select * from person where name = 'zwy100'*/
	public static void query() {
		DBObject obj = new BasicDBObject();
		obj.put("name", "zwy100");
		DBCollection table = db.getCollection("person");
		DBCursor cursor = table.find(obj);
		
		while(cursor.hasNext()) {
			System.out.println(cursor.next());
		}
		/*select name from person where name = 'zwy100'*/
		cursor =  table.find(obj,new BasicDBObject().append("name", 1));
		while(cursor.hasNext()) {
			System.out.println(cursor.next());
		}
	}
	/*delete from person where name = 'zwy100'*/
	public static void delete() {
		DBCollection table = db.getCollection("person");
		DBObject query = new BasicDBObject();
		query.put("name", "zwy100" );
		table.findAndRemove(query);
	}
	/*等价于update person set age=666 where name = 'zwy100'*/
	public static void update() {
		DBObject obj = new BasicDBObject();
		obj.put("name", "zwy100");
		DBObject obj2 = new BasicDBObject();
		
		obj2.put("$set", new BasicDBObject().append("age",666));
		DBCollection table = db.getCollection("person");
		DBObject rs = table.findOne(obj);
		System.out.println(rs);
		System.out.println(obj2);
		System.out.println(table.update(rs,obj2).getN());
		//table.update(rs,obj2);		
	}
	public static void destroy(){
		//连接mogodb服务器
		if(null != mg) {
			mg.close();
		}
	}
	
	/*
	 * key:grouby 的关键字
	 * initial :初始化话函数,所有age相同的组别,执行reduce之前要先调用的函数
	 * reduce:对所有age相同的记录要执行的reduce函数
	 * finalize:执行完所有的reduce函数之后要调用的函数
	 * condition:输出的判断条件
	db.person.group({
		key:{age:true},  
		initial:{"person":[]},
		$reduce:function(cur, prev) {
			prev.person.push(cur.name);
		},
		finalize:function(out) {
		 out.size =  out.person.length;
		},
		condition:{age:{$gt:20}}
	})
	 * */
	public static void group() {
		DBCollection table = db.getCollection("person");
		DBObject keys = new BasicDBObject().append("age", "true"); 
		DBObject initial = new BasicDBObject().append("person", new ArrayList());;
		String reduce = 
			"function(cur, prev) {"
			+ "if( prev.person.length < 3)"
			+  "prev.person.push(cur.name);"
		    +"}";
		String finalize =" function(out) { "
		 +" out.size =  out.person.length;"
		 + "}; ";
	    DBObject cond = new BasicDBObject().append("age",new BasicDBObject().append("$gt",20));
		DBObject list = table.group(keys,cond ,initial,reduce,finalize);
		System.out.println(list);
	}
	public static void main(String[] args) throws UnknownHostException {
		init();		
		//insert();
		//query();
		group();
		//update();
		//delete();
		destroy();		
	}	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值