`
panshaobinSB
  • 浏览: 202858 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

mogodb的java操作

 
阅读更多
package com.panshao.test;

import java.util.ArrayList;
import java.util.List;

import org.bson.types.ObjectId;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

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

public class CRUDtest {
	private Mongo mg = null;
	private DB db;
	private DBCollection users;
	
	@Before
	public void init(){
		try{
			mg = new Mongo();
		}catch(Exception e){
			e.printStackTrace();
		}
		
		db = mg.getDB("test");
		users = db.getCollection("users");
	}
	
	@After
	public void destory(){
		print("------------------------");
		if(mg != null){
			mg.close();
		}
		mg = null;
		db = null;
		users = null;
		System.gc();
	}
	
	public void print(Object o){
		System.out.println(o);
	}
	
	/**
	 * 查询users的所有数据
	 */
	private void queryAll(){
		print("查询users的所有数据:");
		DBCursor cur = users.find();
		while(cur.hasNext()){
			print(cur.next());
		}
	}
	
	/**
         *这个例子虽然我修改了一些,但是感觉还是有点问题,再看看之后再来修改
	 * 1,为什么不能复用对象?
	 * 每次都要重新new 出一个新的对象,不然后面执行的插入操作都不成功
	 * DBObject user = new BasicDBObject();
	 * 
	 * 2,为什么每次getN()都是0,这个玩意是什么意思来的?
	 */
	
	@Test
	public void add(){
		queryAll();
		print("count: "+users.count());//2
		
		DBObject user = new BasicDBObject();
		user.put("name", "panshao");
		user.put("age", 24);
		
		//扩展字段,随意添加字段,不影响现有数据
		user.put("sex", "男");
		print("users.save(pansaho): "+users.save(user).getN());//3
		
		//添加多条数据,传递Array对象
		DBObject user2 = new BasicDBObject();
		user2.put("name", "petty");
		user2.put("age", 3);
		user2.put("height", 1.80);
		print("users.save(tom): "+users.insert(user2,new BasicDBObject("name", "tom")).getN());//5
		
		List<DBObject> list = new ArrayList<DBObject>();
		DBObject user3 = new BasicDBObject("name","lily");
		user3.put("age", 22);
		list.add(user3);
		DBObject user4 = new BasicDBObject("name","lucy");
		user4.put("age", 22);
		list.add(user4);
		
		print("users.save(panshao,lucy): "+users.insert(list).getN());//7
		print("count: "+users.count());
		queryAll();
	}
	
	@Test
	public void remove() {
	    queryAll();
	    print("删除id = 51ff519e7027f3055f892eb2:" + users.remove(new BasicDBObject("_id", new ObjectId("51ff519e7027f3055f892eb2"))).getN());
	    print("remove age < 5: " + users.remove(new BasicDBObject("age", new BasicDBObject("$lt", 5))).getN());
	    print("remove age = 22: " + users.remove(new BasicDBObject("age", 22)).getN());
	    queryAll();
	}
	
	@Test
	public void modify() {
		queryAll();
		//为什么在修改一个属性的时候会把原来整条记录的其它字段去除掉了,除了ID不变外,感觉就是一条全新的记录。
		/**
		 *  update(BasicDBobject ,BasicDBobject)
			第一个参数是查找条件,需要修改的对象,第二个参数是修改内容,如果不用set就是把原来的对象更新为现在的对象。
			如果有$set那就是更新属性,如果属性不存在则添加。其他参数使用方法一样。
		 */
	    print("修改:" + users.update(new BasicDBObject("_id", new ObjectId("51ff5da77027fac30bd9a218")), new BasicDBObject("$set", new BasicDBObject("age",34))).getN());
	    queryAll();
	    
	    print("修改:" + users.update(
	            new BasicDBObject("_id", new ObjectId("4dde2b06feb038463ff09042")), 
	            new BasicDBObject("age", 121),
	            true,//如果数据库不存在,是否添加,如果存在的话也会被直接被一个全新的对象取代掉了,age以后的属性都会被清除掉了
	            false
	            ).getN());
	    queryAll();
	    
	    
	   
		BasicDBObject user = new BasicDBObject("name","jack");
		user.put("age", 0000);
		user.put("sex", "male");
	    print("修改:" + users.update(
	            new BasicDBObject("name", "dd"), 
	            new BasicDBObject("$set", user),
	            true,//如果数据库不存在,是否添加
	            false//false只修改第一条,true如果就修改多条
	            ).getN());
		queryAll();
	}
	
	@Test
	public void querys(){
		queryAll();
	}
        
        	/**
	 * 请先执行这个函数
	 * db.system.js.save({_id:"insertList",value:function(list){for(var i=0; i < list.length; i++){ db.users.save(list[i]);}}});
	 */
	@Test
	public void func(){
		queryAll();
		 //insertList是存储在db.system.js中的函数,接受一个数组参数
	    String proc="function(list){ return insertList(list);}";
	    
	    //Java 的List可以对应到JS的数组
	    List<DBObject> list = new ArrayList<DBObject>();
	    DBObject user1 = new BasicDBObject();
	    user1.put("name", "mike");
	    DBObject user2 = new BasicDBObject();
	    user2.put("name", "jason");
	    list.add(user1);
	    list.add(user2);

	    try {
	        CommandResult cr = db.doEval(proc, list);
	        print("result:"+cr.toString());
	    } catch (MongoException e) {
	        e.printStackTrace();
	    }
	    queryAll();
	}
	
}

分享到:
评论

相关推荐

    MongoDB Java操作大全 源代码 实例

    本资料包“MongoDB Java操作大全 源代码 实例”将深入探讨如何使用Java API进行MongoDB的操作。 1. **连接MongoDB** 在Java中,首先需要通过`MongoClient`类建立到MongoDB服务器的连接。例如: ```java ...

    Mongodb Java操作实例代码+windows安装包+jar包+ROBO可视化工具

    本资源包提供了MongoDB在Windows平台上的安装指南、Java操作实例代码、所需的jar包以及ROBO 3T(前身为ROBO MongoDB)这一可视化工具,帮助开发者快速上手MongoDB的Java应用。 首先,让我们详细讲解MongoDB的...

    mongodb java 简单操作 win32 安装步骤

    在Windows 32位系统上安装MongoDB并进行Java操作涉及以下关键步骤: **一、MongoDB的Win32安装** 1. **下载MongoDB**:首先,你需要访问MongoDB官方网站(https://www.mongodb.com/)下载适用于Windows 32位系统的...

    MongoDB Java Driver 简单操作

    ### MongoDB Java Driver 简单操作详解 #### 一、简介 MongoDB 是一款非常流行的文档型数据库系统,因其灵活性和高性能而被广泛应用于多种场景之中。为了方便开发者使用 Java 进行开发,MongoDB 提供了官方的 Java ...

    MongoDBjava各版本驱动下载

    MongoDB Java驱动是Java开发者与MongoDB数据库交互的重要工具,它允许Java应用程序通过标准的Java API来执行查询、插入、更新和删除等操作。在Java中使用MongoDB,首先需要安装并配置对应的驱动版本,以确保与正在...

    mongodb java简单demo

    本篇将详细介绍如何使用Java连接MongoDB,以及进行基本的数据操作:创建集合、添加文档、修改文档、查询文档和删除文档。 首先,为了连接MongoDB,我们需要引入MongoDB的Java驱动程序依赖。在Maven项目中,可以在...

    mongoDB java driver api

    MongoDB是一个高性能、开源、无模式的文档型数据库,而Java驱动API则为Java开发者提供了一个直观且强大的接口来操作MongoDB。 首先,让我们了解一下MongoDB Java驱动API的基本结构和核心概念: 1. **MongoClient**...

    MongoDB Java API 中文

    ### MongoDB Java API 使用详解 #### 一、Java 驱动简介与一致性 MongoDB 的 Java 驱动是...这些知识点涵盖了大部分常见的 MongoDB 应用场景,可以帮助初学者快速上手并熟练掌握如何使用 Java 驱动进行数据库操作。

    mongodb java Driver

    MongoDB Java驱动程序是Java开发者用来与MongoDB数据库进行交互的一种关键工具。它提供了一组丰富的API,使得在Java应用程序中执行CRUD(创建、读取、更新、删除)操作变得简单而高效。MongoDB是一个分布式文档存储...

    java 操作mongodb 增删改查

    以上就是Java操作MongoDB的基本步骤。这个“mongodb_helloworld”项目应该包含示例代码,帮助初学者快速上手。记得在实际应用中,你需要处理异常并适当地关闭MongoClient,以避免资源泄漏: ```java mongoClient....

    MongoDB 在java中的应用 纯Java操作

    ### MongoDB在Java中的应用 #### 一、MongoDB简介与安装步骤 ...通过上述步骤,我们可以在Java环境中高效地使用MongoDB进行数据管理和操作。这种方式不仅提高了开发效率,还增强了应用程序的性能和可维护性。

    Mongodb + GridFS +Java 操作Mongodb中存储的文件

    在这个Java操作MongoDB中存储的文件实例中,我们将探讨如何利用GridFS API进行文件的存取。 首先,我们需要在Java项目中引入MongoDB的驱动库。目前,Java驱动通常使用的是MongoDB Java Driver,可以在Maven仓库中...

    java操作mongodb存储文件实例

    将一系列图片文件存储到MongoDB中 java操作mongodb存储文件

    java操作mongoDB(CRUD)

    Java操作MongoDB主要涉及到的是Java驱动程序与MongoDB数据库之间的交互,这涵盖了创建连接、执行CRUD(创建、读取、更新、删除)操作等一系列基本的数据库管理任务。MongoDB是一个流行的NoSQL数据库,以其灵活性、高...

    MongoDB java实现增删改查

    在Java开发中,我们可以使用MongoDB的Java驱动程序来实现对MongoDB数据库的增、删、改、查(CRUD)操作。以下是对这些核心功能的详细说明。 1. **增加(Create)** 要在MongoDB中插入数据,我们需要使用`...

    mongodb java 驱动支持jar 及其源码

    这个驱动程序允许Java应用程序连接到MongoDB服务器,执行CRUD(创建、读取、更新、删除)操作,进行查询、聚合以及其他高级数据库操作。例如,你可以使用`com.mongodb.client.MongoClients.create()`方法创建一个...

    mongoDB 操作 java源代码

    Java MongoDB 驱动是连接 Java 应用程序与 MongoDB 数据库的桥梁,它提供了丰富的 API 供开发者进行数据的增删改查以及其他操作。本压缩包包含的是 `mongodb-mongo-java-driver` 的源代码,版本号可能是 e6901ec,这...

    mongodb java driver 2.11

    MongoDB Java Driver 2.11是用于与MongoDB数据库进行交互的Java开发库,它提供了丰富的API,使得Java开发者可以方便地在应用程序中存取和管理MongoDB的数据。MongoDB是一款高性能、分布式、文档型的NoSQL数据库,它...

    mongodb_java_2.6_API

    MongoDB的Java驱动程序是Java开发者与MongoDB服务器通信的桥梁,它提供了丰富的API,使得在Java应用中执行CRUD(创建、读取、更新、删除)操作变得简单。2.6版本是历史版本,但仍然包含了许多核心功能,如连接管理...

    MongoDb java driver 3.4.2

    MongoDB是一个流行的NoSQL数据库系统,而Java驱动程序则提供了在Java应用程序中操作MongoDB的接口。以下是关于MongoDB Java驱动3.4.2版本的一些关键知识点: 1. **驱动程序版本**:3.4.2是MongoDB Java驱动的一个...

Global site tag (gtag.js) - Google Analytics