[NoSQL]MongoDB初体验

本文介绍了MongoDB的基础特性和使用体验,包括文档存储、索引支持、复制与高可用性等功能。并通过具体步骤演示了如何在Linux环境下安装MongoDB并使用Java客户端进行基本操作。

因为未来业务发展的一个需求里的,考虑要用到NoSql,所以做了一些预研。今天简单体验了下mongdb,感觉挺合适的,有点热血沸腾。简单记录下mongoDB的一些初体验。

mongoDB的特性有哪些?以下是官网的定义:

MongoDB (from "humongo us") is a scalable, high-performance, open source NoSQL database. Written in C++, MongoDB features:

以上定义很喜人吧,我还没有深入研究。其他的特性且不说,单是以下两个特性已经能满足我的需求了。

1.面向集合,模式自由 “面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库 (RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。

 

2.虽然是非结构化数据,但支持动态查询 。允许在任意字段赏建立索引,支持任意属性作为条件的遍历查找。

不过深入的还需要在调研。

以下记录一下体验帖,没任何技术含量,入门可参考:

 

1.安装

1.下载:http://www.mongodb.org/downloads 在上面找到你需要的版本。

2.linux下的安装

解压即可,并通过sudo mkdir -p /data/db 创建数据存储目录。

3.启动:先到mongodb安装目录的bin目录下启动mongod,然后启动一个客户端mongo即可进行操作。输入help命令就可以查到主要的命令了。逐一体验即可。

 

 

2.java客户端体验

1.还是在官网上下载java driver

2.编写代码

以下是我编写的一些插入、查找功能等代码,还是十分简单的

package test.mongodb;

import java.net.UnknownHostException;

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

public class MyDB {
	DB db;
	DBCollection coll;

	MyDB(String dbName) {
		Mongo m = null;
		try {
			m = new Mongo("localhost", 27017);//创建Mongo实例
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (MongoException e) {
			e.printStackTrace();
		}

		db = m.getDB(dbName);//获取数据库
		coll = db.getCollection("foo");//数据集,类似表
	}


	/**
	 * 往数据集里插入一个文档
	 */
	public void insertDoc() {
		BasicDBObject doc = new BasicDBObject();
		doc.put("memberId", "abing3");
		doc.put("businessModel", "manufature");
		doc.put("count", 1);
		BasicDBObject info = new BasicDBObject();
		info.put("x", 203);
		info.put("y", 102);
		doc.put("attr", info);
		coll.insert(doc);
	}

	/**
	 * 往数据集里循环插入文档
	 */
	public void loopInsertDoc() {
		for (int i = 0; i < 100; i++) {
			BasicDBObject doc = new BasicDBObject();
			doc.put("memberId", "abing3"+i);
			doc.put("businessModel", "manufature");
			doc.put("count", 1);
			BasicDBObject info = new BasicDBObject();
			info.put("x", 203);
			info.put("y", 102);
			doc.put("attr", info);
			coll.insert(doc);
		}
	}

	/**
	 * 从数据集里查找一个文档
	 */
	public void findDoc() {
		DBObject myDoc = coll.findOne();
		System.out.println(myDoc);
	}
	
	/**
	 * 统计文档数
	 */
	public void countDocs(){
		System.out.println(coll.count());
	}

	/**
	 * 通过游标遍历文档
	 */
	public void iterateAccess() {
		DBCursor cur = coll.find();
		while (cur.hasNext()) {
			System.out.println(cur.next());
		}
	}
	
	/**
	 * 通过条件查找
	 */
	public void findDocWithQuery() {
		BasicDBObject query = new BasicDBObject();
		query.put("member_id", "abing37");
		DBCursor cur = coll.find(query);
		while (cur.hasNext()) {
			System.out.println(cur.next());
		}
	}
	
	/**
	 * 查询集合
	 */
	public void querySet() {
		BasicDBObject query = new BasicDBObject();
		query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30)); 
		DBCursor cur = coll.find(query);
		while (cur.hasNext()) {
			System.out.println(cur.next());
		}
	}

	/**
	 * 创建索引
	 */
	public void createIndex() {
		coll.createIndex(new BasicDBObject("memberId", 1));
	}

	//test
	public static void main(String[] args) {
		MyDB db = new MyDB("mydb");
//		db.insertDoc();
//		db.loopInsertDoc();
//		db.findDoc();
//		db.countDocs();
//		db.iterateAccess();
//		db.findDocWithQuery();
//		db.querySet();
//		db.createIndex();
	}
}

 

 

 

 

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
先看效果: https://pan.quark.cn/s/3756295eddc9 在C#软件开发过程中,DateTimePicker组件被视为一种常见且关键的构成部分,它为用户提供了图形化的途径来选取日期与时间。 此类控件多应用于需要用户输入日期或时间数据的场景,例如日程管理、订单管理或时间记录等情境。 针对这一主题,我们将细致研究DateTimePicker的操作方法、具备的功能以及相关的C#编程理念。 DateTimePicker控件是由.NET Framework所支持的一种界面组件,适用于在Windows Forms应用程序中部署。 在构建阶段,程序员能够通过调整属性来设定其视觉形态及运作模式,诸如设定日期的显示格式、是否展现时间选项、预设的初始值等。 在执行阶段,用户能够通过点击日历图标的下拉列表来选定日期,或是在文本区域直接键入日期信息,随后按下Tab键或回车键以确认所选定的内容。 在C#语言中,DateTime结构是处理日期与时间数据的核心,而DateTimePicker控件的值则表现为DateTime类型的实例。 用户能够借助`Value`属性来读取或设定用户所选择的日期与时间。 例如,以下代码片段展示了如何为DateTimePicker设定初始的日期值:```csharpDateTimePicker dateTimePicker = new DateTimePicker();dateTimePicker.Value = DateTime.Now;```再者,DateTimePicker控件还内置了事件响应机制,比如`ValueChanged`事件,当用户修改日期或时间时会自动激活。 开发者可以注册该事件以执行特定的功能,例如进行输入验证或更新关联的数据:``...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值