MongoDB简单的配置及应用

摘要:
正所谓乱世出英雄,在这样的环境中,MongoDB就出现了。与MongoDB同类型的产品有Hadoop等。在cmd下将目录切换至bin目录,运行mongo.exe即可连上服务端。

一、简介

由于工作需要,最近使用了NoSQL的典型代表——MongoDB数据库。这个在2011年被炒的沸沸扬扬的东东,据说在2010年会成为《2012最受企业欢迎的开发技能Top10》之一。

首先了解几个关键词:

NoSQL:是相对于我们熟知的MS Sql Server和My SQL这种关系型数据库来说的,关系型数据库的最大特点就是遵循范式,就想教科书里定义的一二三范式、BC范式等记不住的公式。

所以,范式用非官方的说法应该是这样的:

第一范式:不能表中套表;

第二范式:每个表有且只有一个主键;

第三范式:表与表之间的关系只能通过外键引用。

No SQL可以翻译为“没有SQL”或者是“Not Only SQL”,即反SQL运动,是一项全新的数据库革命。

随着网络的飞速发展和各种Web2.0网站的兴起,特别是超大规模的和高并发的SNS类型的社交网站和web2.0的纯动态网站已经显得力不从心了,面对海量的数据和几十万、几百万的

访问量和高并发量,暴露出许多难以克服的问题。

正所谓乱世出英雄,在这样的环境中,MongoDB就出现了。

MongoDB:

MongoDB是NoSQL的典型代表。它是一种介于关系型和非关系型数据库之间的产品。它是面向集合的(Collections-Oriented)。与MongoDB同类型的产品有Hadoop等。

二、用法

1、安装服务端

首先,下载安装MongoDB服务端程序,下载地址:http://www.mongodb.org/downloads ;windows环境下下载到是一堆.exe可执行文件。

其次,在安装exe之前,需要手动为MongoDB创建一个存放数据的目录,如 “D:\mongoDB\data\db”;

安装:打开cmd命令行,切换至mongoDB的bin目录,启动mongoDB的服务器:mongod.exe -dbpath "D:\mongoDB\data\" ,效果如图所示:

clipboard

默认端口号:27017

可以通过 localhost:28017查看服务端运行情况。

2、使用客户端管理工具

bin目录下的mongo.exe是MongoDB的客户端工具,以命令行形式对MongoDB进行CRUD以及查看等操作。在cmd下将目录切换至bin目录,运行 mongo.exe即可连上服务端。

常用命令有:

show dbs; //显示所有的数据库

use TestDB;//使用该数据库,注意,MongoDB大小写敏感

show collections;//显示表,在MongoDB中是集合

db; // 显示当前使用的数据库

db.Test.find();//select * from Test

db.Test.remove();//delete from Test

db.Test.count();//select count(*) from Test

db.runCommand({"serverStatus" : 1}); //获取服务端状态

db.test2.update({ "_id" : "2" }, { $inc : {shoe : 1} }) //找到记录并修改,实现自增1的效果

三、.Net下驱动用法

1、首先需要下载MongoDB for C#的驱动,即2个dll文件,MongoDB.Bson.dll和MongoDB.Driver.dll

2、C#的增删改查方法

插入:

static void InsertToCollection1(string word)
{
	// 插入到collection1中
	BsonArray bsonArr = new BsonArray();
	for (int j = 0; j < 5; j++)
	{
		if (!String.IsNullOrEmpty(dict1[word][j]))
		{

			bsonArr.Add(dict1[word][j]);
		}
	}
	QueryDocument query = new QueryDocument("_id", word);
	UpdateDocument update = new UpdateDocument("$set", new BsonDocument("arr", bsonArr));
	collection1.Update(query, update, UpdateFlags.Upsert);

}
更新:
static void Update(string words)
{
	QueryDocument query = new QueryDocument("_id", words);
	// 自增1
	UpdateDocument update = new UpdateDocument("$inc", new BsonDocument("c", 1));
	collection2.Update(query, update);
}

四、MongoDB客户端语法

数据集(表)操作语法

db.test.find({id:10})          返回test数据集ID=10的数据集
db.test.find({id:10}).count()  返回test数据集ID=10的数据总数
db.test.find({id:10}).limit(2) 返回test数据集ID=10的数据集从第二条开始的数据集
db.test.find({id:10}).skip(8)  返回test数据集ID=10的数据集从0到第八条的数据集
db.test.find({id:10}).limit(2).skip(8)  返回test数据集ID=1=的数据集从第二条到第八条的数据
db.test.find({id:10}).sort()   返回test数据集ID=10的排序数据集
db.test.findOne([query])       返回符合条件的一条数据
db.test.getDB()                返回此数据集所属的数据库名称
db.test.getIndexes()           返回些数据集的索引信息
db.test.group({key:...,initial:...,reduce:...[,cond:...]})
db.test.mapReduce(mayFunction,reduceFunction,<optional params>)
db.test.remove(query)                      在数据集中删除一条数据
db.test.renameCollection(newName)          重命名些数据集名称
db.test.save(obj)                          往数据集中插入一条数据
db.test.stats()                            返回此数据集的状态
db.test.storageSize()                      返回此数据集的存储大小
db.test.totalIndexSize()                   返回此数据集的索引文件大小
db.test.totalSize()                        返回些数据集的总大小
db.test.update(query,object[,upsert_bool]) 在此数据集中更新一条数据 
db.test.validate()                         验证此数据集 
db.test.getShardVersion()                  返回数据集共享版本号
db.test.find({'name':'foobar'})    select * from test where name='foobar'
db.test.find()                     select * from test
db.test.find({'ID':10}).count()    select count(*) from test where ID=10
db.test.find({'ID':{$in:[25,35,45]}})  select * from test where ID in (25,35,45)
db.test.find().sort({'ID':-1})      select * from test order by ID desc
db.test.distinct('name',{'ID':{$lt:20}})   select distinct(name) from test where ID<20
select name,sum(marks) from test group by name
db.test.find('this.ID<20',{name:1})     select name from test where ID<20
db.test.insert({'name':'foobar','age':25})  insert into test ('name','age') values('foobar',25)
db.test.insert({'name':'foobar','age':25,'email':'test@163.com'})
db.test.remove({})                   delete * from test
db.test.remove({'age':20})           delete test where age=20
db.test.remove({'age':{$lt:20}})     delete test where age<20
db.test.remove({'age':{$lte:20}})    delete test where age<=20
db.test.remove({'age':{$gt:20}})     delete test where age>20
db.test.remove({'age':{$gte:20}})    delete test where age>=20
db.test.remove({'age':{$ne:20}})     delete test where age!=20
db.test.update({'name':'foobar'},{$set:{'age':36}})  update test set age=36 where name='foobar'
db.test.update({'name':'foobar'},{$inc:{'age':3}})   update test set age=age+3 where name='foobar'

免责声明:文章转载自《MongoDB简单的配置及应用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]前后端分离开发模式下后端质量的保证 —— 单元测试[leetcode]299. Bulls and Cows公牛和母牛下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Hibernate一级缓存、二级缓存

缓存就是把以前从数据库中查询出来和使用过的对象保存在内存中,准确说就是一个数据结构中,这个数据结构通常是或类似HashMap,当以后要使用某个对象时,先查询缓存中是否有这个对象,如果有则使用缓存中的对象,如果没有则去查询数据库,并将查询出来的对象保存在缓存中,以便下次使用。 1、缓存的伪代码: DAO { HashMap map = new Ma...

mongodb进阶一之高级查询

上篇文章我们讲了mongodb的crud基本操作 http://blog.csdn.net/stronglyh/article/details/46812579 这篇我们来说说mongodb的进阶--------------高级查询 一:各种查询 1:条件操作符 <, <=, >, >= 这个操作符就不用多解释了,最经常使用也是...

sqlalchemy 数据库操作

1、简介 一种ORM 2、安装 pip3 install -i https://pypi.douban.com/simple sqlalchemy 3、连接数据库 from sqlalchemy importcreate_engine engine =create_engine( "mysql+pymysql://root:密码@1...

powerbuilder连接oracle数据库

一、打开已经安装好的pb9.0,主界面菜单栏有个两个圆柱形就行数据库连接,点击database。 二、选择oracle版本,由于数据库版本是9i,可以使用084 oracle8/8i.右键--选择new profile。当然你也可以设置好的profile导入进去。也可以把设置好profile导出来。 三、弹出database profile setup界...

(一)Redis之简介和windows下安装radis

一、简介  1.1  关于nosql 介绍Redis之前,先了解下NoSQL (Not noly SQL)不仅仅是SQL, 属于非关系型数据库;Redis就属于非关系型数据库, 传统的Mysql ,oracle ,sql server 等 都是关系型数据库。   1.2  nosql的作用 为什么需要NoSQL,主要应对以下问题,传统关系型数据库力不从心...

Postgresql pg_dump

pg_dump 命令详解 参数 描述 -h 指定服务器名称 -p 指定端口 -U 指定要连接的用户名 -w/--no-password 从不提示密码 -W/--password 强制pg_dump在连接到一个数据库之前提示密码 --role=rolename 该设置会导致在连接到数据库时发布一个set role rolename...