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

MongoDB应用例子

阅读更多

MongoDB应用例子


JDBC应用例子:
<dependency>
	<groupId>org.mongodb</groupId>
	<artifactId>mongodb-driver</artifactId>
	<version>3.2.2</version>
</dependency>


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

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;

public class MongoDBJDBC {
	public static void main(String args[]) {
		try {
			// 连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
			// ServerAddress()两个参数分别为 服务器地址 和 端口
			ServerAddress serverAddress = new ServerAddress("localhost", 27017);
			List<ServerAddress> addrs = new ArrayList<ServerAddress>();
			addrs.add(serverAddress);

			// MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
			MongoCredential credential = MongoCredential.createScramSha1Credential("admin", "admin",
					"admin".toCharArray());
			List<MongoCredential> credentials = new ArrayList<MongoCredential>();
			credentials.add(credential);

			// 通过连接认证获取MongoDB连接
			MongoClient mongoClient = new MongoClient(addrs, credentials);

			// 连接到数据库
			MongoDatabase mongoDatabase = mongoClient.getDatabase("testDB"); // 得到要操作的数据库

			MongoCollection<Document> collection = mongoDatabase.getCollection("test");// 得到要操作的集合
			if (collection == null) {
				mongoDatabase.createCollection("test");// 集合创建
				System.out.println("集合创建成功");
				System.out.println("Connect to database successfully");
			}

			collection = mongoDatabase.getCollection("test");// 得到要操作的集合
			System.out.println("集合 test 选择成功");
			// 插入文档
			/**
			 * 1. 创建文档 org.bson.Document 参数为key-value的格式 2. 创建文档集合List
			 * <Document> 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List
			 * <Document>) 插入单个文档可以用 mongoCollection.insertOne(Document)
			 */
			Document document = new Document("title", "MongoDB").append("description", "database").append("likes", 100)
					.append("by", "Fly"); // 新建文档集
			List<Document> documents = new ArrayList<Document>();
			documents.add(document);
			collection.insertMany(documents);// 向集合插入文档集

			System.out.println("文档插入成功");

			// 检索所有文档
			/**
			 * 1. 获取迭代器FindIterable<Document> 2. 获取游标MongoCursor<Document> 3.
			 * 通过游标遍历检索出的文档集合
			 */
			FindIterable<Document> findIterable = collection.find(); // 查找所有文档集合
			MongoCursor<Document> mongoCursor = findIterable.iterator();
			while (mongoCursor.hasNext()) {
				System.out.println(mongoCursor.next());
			}

			mongoClient.close(); // 关闭连接
		} catch (Exception e) {
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
		}
	}
}


参考原文(JDBC应用):http://www.runoob.com/mongodb/mongodb-java.html


spring data mongodb(MongoTemplate)

<dependency>
	<groupId>org.springframework.data</groupId>
	<artifactId>spring-data-mongodb</artifactId>
	<version>1.9.3.RELEASE</version>
</dependency>


applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:mongo="http://www.springframework.org/schema/data/mongo"
        xmlns:dwr="http://www.directwebremoting.org/schema/spring-dwr"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
            http://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsd">

 <context:annotation-config />
	<!-- <task:annotation-driven /> -->
	<context:component-scan base-package="com" />

    <mongo:mongo host="localhost" port="27017" >
            <!-- 可选项如果不配置则为值为默认 -->
          <mongo:options
              connections-per-host="8"
              threads-allowed-to-block-for-connection-multiplier="4"
              connect-timeout="1000"
              max-wait-time="1500"
              auto-connect-retry="true"
              socket-keep-alive="true"
              socket-timeout="1500"
              slave-ok="true"
              write-number="1"
              write-timeout="0"
              write-fsync="true"
                  />
    </mongo:mongo>

    <mongo:db-factory id="anotherMongoDbFactory"
    host="localhost"
    port="27017"
    dbname="admin"
    username="admin"
    password="admin" mongo-ref="mongo"/>

    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="anotherMongoDbFactory" />
       <!--  <constructor-arg ref="mongo" />
        <constructor-arg name="databaseName" value="test" />链接数据库的名字 -->
    </bean>
     <bean id="natureRepository"
        class="com.NatureRepositoryImpl">
    </bean>
</beans>



package com;

public class Address {
	private String addr;
private String pro;

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public String getPro() {
		return pro;
	}

	public void setPro(String pro) {
		this.pro = pro;
	}
}



package com;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
public class Person {
	@Id
	private String id;
	private String name;
	private int age;

	private Address address;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Address getAddress() {
		return address;
	}

	public void setAddress(Address address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
	}

}



package com;

import java.util.List;

import com.mongodb.WriteResult;

public interface Repository<T> {

	public List<T> getAllObjects();

	public void saveObject(T object);

	public T getObject(String id);

	public WriteResult updateObject(String id, String name);

	public void deleteObject(String id);

	public void createCollection();

	public void dropCollection();
}


package com;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;

import com.mongodb.WriteResult;

public class NatureRepositoryImpl implements Repository<Person> {
	@Resource
	MongoTemplate mongoTemplate;

	public List<Person> getAllObjects() {
		return mongoTemplate.findAll(Person.class);
	}

	public void saveObject(Person tree) {
		mongoTemplate.insert(tree);
	}

	public Person getObject(String id) {
		// return mongoTemplate.find(new Query(Criteria.where("id").is(id)),
		// Person.class).get(0);
		return mongoTemplate.findById(id, Person.class);
	}

	public WriteResult updateObject(String id, String name) {
		return mongoTemplate.updateFirst(new Query(Criteria.where("id").is(id)), Update.update("name", name),
				Person.class);
	}

	public void deleteObject(String id) {
		mongoTemplate.remove(new Query(Criteria.where("id").is(id)), Person.class);
	}

	public void createCollection() {
		if (!mongoTemplate.collectionExists(Person.class)) {
			mongoTemplate.createCollection(Person.class);
		}
	}

	public void dropCollection() {
		if (mongoTemplate.collectionExists(Person.class)) {
			mongoTemplate.dropCollection(Person.class);
		}
	}
}



package com;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MongoTest {
	public static void main(String[] args) throws InterruptedException {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");

		Repository<Person> repository = applicationContext.getBean(NatureRepositoryImpl.class);
		System.out.println(repository);

		repository.dropCollection();
		repository.createCollection();
		Person person = new Person();
		Address address = new Address();

		address.setAddr("合肥");
		address.setPro("安徽");
		person.setAddress(address);
		person.setAge(20);
		person.setName("senssic");
		person.setId("1");
		repository.saveObject(person);

		System.out.println("1. " + repository.getAllObjects().toString());
		person.setId("101");
		repository.saveObject(person);
		System.out.println("2. " + repository.getAllObjects().toString());

		person = repository.getObject("1");
		System.out.println(person.toString());

		System.out.println("合肥");
		repository.updateObject("1", "sen");
		System.out.println("3. " + repository.getAllObjects().toString());
		repository.deleteObject("1");
		System.out.println("4. " + repository.getAllObjects().toString());
	}
}


参考原文(配置参数):http://blog.csdn.net/freebird_lb/article/details/8229567
参考原文(配置参数):http://www.cnblogs.com/basecn/p/springmongo_intergration_cfg.html
参考原文:http://www.xuebuyuan.com/2207064.html
参考原文(Query(查询语句)):http://www.07net01.com/2015/08/889188.html
参考原文:http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/
参考原文:http://blog.csdn.net/zhongweijian/article/details/7625286
分享到:
评论

相关推荐

    C语言程序设计之(一)手机通讯录管理系统

    C语言程序设计之(一)手机通讯录管理系统

    清华大学2023级物理学专业本科培养方案

    清华大学2023级物理学专业本科培养方案

    docbook5-style-xsl-extensions-1.78.1-4.el7.x64-86.rpm.tar.gz

    1、文件内容:docbook5-style-xsl-extensions-1.78.1-4.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/docbook5-style-xsl-extensions-1.78.1-4.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    Python网络爬虫开发指南.docx

    网络爬虫简介, 介绍了网络爬虫, 并讲解了爬取网站的方法。 数据抓取,展示了如何从网 页中抽取数据。 下载缓存, 学习了如何通过缓存结果避免重复下载的问题。 并发下载, 通过并行下载加速数据抓 取。 动态内容, 展示了如何从动态网 站中抽取数据。 表单交互, 展示了如何与 表单进行交互, 从而访问你需要的数据。 验证码处理, 阐述了如何访问被验证码图像保护的数据。 Scrapy, 学习了如何使用流行的高级框架 Scrapy。

    2025最新电力安全工作规程考试题及答案.doc

    2025最新电力安全工作规程考试题及答案.doc

    2025最新手术室考试题及答案.doc

    2025最新手术室考试题及答案.doc

    environment-modules-3.2.10-10.el7.x64-86.rpm.tar.gz

    1、文件内容:environment-modules-3.2.10-10.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/environment-modules-3.2.10-10.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    2025医疗三基三严知识试题题库(附答案).docx

    2025医疗三基三严知识试题题库(附答案).docx

    用于计算点云周围的凸包的算法Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    通过线性规划在不同风险度下的最优投资组合的MATLAB代码

    通过线性规划在不同风险度下的最优投资组合的MATLAB仿真代码。MATLAB代码通过线性规划(linprog)模拟不同风险度下的最优投资组合。代码初始化风险度 a,并逐步增加至0.05。在每个风险度下,定义目标函数、约束条件和等式约束,调用linprog求解最优投资比例,计算收益并绘制风险度与收益的关系图。该模型展示了如何在风险与收益间权衡,为投资决策提供参考。

    科学计算器程序QZQ.zip

    科学计算器程序QZQ

    该程序将深度图与其彩色图像对齐,用于基于图像的渲染应用程序Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    farstream-0.1.2-8.el7.x64-86.rpm.tar.gz

    1、文件内容:farstream-0.1.2-8.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/farstream-0.1.2-8.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    fence-agents-rhevm-4.2.1-41.el7-9.6.x64-86.rpm.tar.gz

    1、文件内容:fence-agents-rhevm-4.2.1-41.el7_9.6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/fence-agents-rhevm-4.2.1-41.el7_9.6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    城市交通和车辆行为数据集

    关于数据集 城市交通和车辆行为数据集是与城市交通和车辆行为相关的各种因素的数据集合。以下是数据集中每列的描述: 1. 城市:收集数据的城市名称。 2. 车辆类型:交通中涉及的车辆类型(例如汽车、卡车、公共汽车、摩托车)。 3. 天气:数据收集时的主要天气状况(例如晴天、下雨、下雪)。 4. 经济状况:城市普遍的经济状况(例如,繁荣、衰退、稳定)。 5. 星期几:收集数据的星期几(例如星期一、星期二等)。 6. 一天中的小时:收集数据的时间,通常以 24 小时格式表示。 7. 速度:交通中车辆的速度,以英里每小时 (mph) 或公里每小时 (km/h) 为单位。 8. 是否是高峰时段:二进制指示符(0 或 1),指示是否在高峰时段收集数据。 9. 发生随机事件:二进制指示符(0 或1),指示在数据收集期间是否发生任何随机事件(例如事故、道路封闭)。 10. 能源消耗:车辆的能源消耗,通常以燃料消耗或用电量来衡量。 该数据集可用于多种目的,例如分析交通模式、研究天气和经济条件对交通的影响、评估能源消耗趋势以及预测交通拥堵。研究人员和交通规划者可能会发现该数据集对于理解和改善城市交通非常

    《基于multisim的AD590运算放大器电路、比例放大电路、AD590传感器》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持

    2025医院招聘护士考试题库(附答案).doc

    2025医院招聘护士考试题库(附答案).doc

    基于双层优化的电动汽车充放电行为调度研究:时空协同,选址定容与风电适应性分析,MATLAB+CPLEX仿真平台下的策略探究,电动汽车 双层优化 选址定容 输配协同 时空优化 MATLAB代码:基于双层

    基于双层优化的电动汽车充放电行为调度研究:时空协同,选址定容与风电适应性分析,MATLAB+CPLEX仿真平台下的策略探究,电动汽车 双层优化 选址定容 输配协同 时空优化 MATLAB代码:基于双层优化的电动汽车优化调度研究 参考文档:考虑大规模电动汽车接入电网的双层优化调度策略 仿真平台:MATLAB+CPLEX 平台 主要内容:代码是一个双层的电动汽车充放电行为优化问题,具体来讲,输电网上层优化将电动汽车与发电机、基本负荷协调,同时考虑风力发电,从而在时域内优化电动汽车的负荷周期。 然后,配电网的下层优化在空间上调度电动汽车负荷的位置。 同时代码考虑了风电的出力场景,研究了不同风电出力下电动汽车的适应性,该代码具有一定的创新性 ,电动汽车; 双层优化; 选址定容; 输配协同; 时空优化; MATLAB代码; 风电出力场景。,基于MATLAB的电动汽车双层优化调度策略研究:时空协同与选址定容优化

    2025医院收费员考试试题及答案.docx

    2025医院收费员考试试题及答案.docx

    基于java+ssm+mysql的云端学习系统 源码+数据库+论文(高分毕设项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat

Global site tag (gtag.js) - Google Analytics