mongodb在我这个C#下手眼中-01初识

虽然不是技术大牛,但是组长推荐看一下,而且我们正在做的项目,类似于资源中心,牵扯到各种怪异数据类型不同分库,所以至今都是采用这种方式:
①MainData表存所有值,变化最大的分库数据用json存储
②json所有的字段都对应着一个index表,用于索引
③一个metadata表存储所有可能的json字段
④如果字段是选择类型的值,则由一个新表储存

从这个框架看来,的确不错,但是问题就在于json和其他表的配合上,比如插入、修改、更新,会比较疯狂的……

既然数据的人类可识别反序列化方式是两种,也就是xml和json,而且mongodb的方式也类似于这个,我们就可以从此数据库下手了。



首先提到它的windows版本和安装相关的,既然说到数据库,就不得不提及mongo的多平台版本,真的和微软是反调,不过随之而来的问题也来了,那就是微软只关注自己的平台,所以自己做得东西肯定很好用。那mongo的操作界面是什么呢?很可惜官方提供的shell只有命令行,至今还没有正式推出一个十分好用的UI,所以我们只能借助于第三方。

先从官方网站下载mongo:http://mongodb.org/
我此时用的版本是3.0。找个地方安装,这个过程很快,当然数据库这东西还是推荐64位系统,可能在win7下需要更新一个补丁,后期版本可能会有变动。
之后你会发现安装主目录会多出很多命令行工具,这都是代码编写人员的最爱啊……虽然我对自己的打字并没有信心

最重要的就是mongod.exe服务和mongo.exe操作端,当然其他的比如监视工具导入导出工具也是作为数据库管理人员必备的,所以这个目录里的东西想用好,你得学习一些命令行的知识,比如cmd,比如系统环境变量,让你启动他们更快速。

那,如何启动呢?mongodb的主要的启动方式是通过读取config配置文件,借助mongod宿主启动一个服务端,具体的config配置可以去手册查看,很详细,也很复杂,下面我发出一个比较简单的配置,这是一个YAML配置,是mongo支持的第二种方式,也是新的方式:

systemLog:
 destination: file
###日志存储位置
 path: C:\data\mongodb_simple\log/mongod.log
 logAppend: true
storage:
##journal配置
 journal:
  enabled: true
##数据文件存储位置
 dbPath: C:\data\mongodb_simple\data
##是否一个库一个文件夹
 directoryPerDB: true
##数据引擎
 engine: wiredTiger
##WT引擎配置
 wiredTiger:
  engineConfig:
##WT最大使用cache(根据服务器实际情况调节)
   cacheSizeGB: 4
##是否将索引也按数据库名单独存储
   directoryForIndexes: true
##表压缩配置
  collectionConfig:
   blockCompressor: zlib
##索引配置
  indexConfig:
   prefixCompression: true
##端口配置
net:
 port: 27017

接下来就是启动了,这里我用的绝对路径,看起来也比较直观,就是给程序一个参数-f:

"C:\Program Files\MongoDB\Server\3.0\bin\mongod.exe" -f "C:\data\mongodb_simple\conf\simple1.conf"

ok,如果数据库无法启动,你可以先启动cmd,在命令行里执行一次这段,看看返回的提示是什么,这是最简单直观的方式了。下面我们尝试一下如何用简单的shell提供程序操作数据库。简单的启动一下mongo.exe,连接至数据库:

C:\Users\zhouzhi>"C:\Program Files\MongoDB\Server\3.0\bin\mongo.exe"
2015-09-30T14:23:39.621+0800 I CONTROL  Hotfix KB2731284 or later update is installed, no need to zero-out data files
MongoDB shell version: 3.0.1
connecting to: test
>

这里我直接执行了mongo.exe,没有附加任何参数,直连localhost:27017的默认位置,看到它在连接成功后也自动跳转到test库下,那我们看一下这个数据库存在几个库:

> show dbs
local  0.000GB
test   0.000GB
>

mongo.exe经常被称为shell,它以JavaScript为主,附加的一些自定义为辅,构成的一套命令脚本,show dbs 这个内置命令,就显示出了含有的库,当然如果你从未操作过的话是不会存在库的。
接下来我进入一个库,并插入一条记录:

connecting to: test
> show dbs
local  0.000GB
test   0.000GB
> use text
switched to db text
> db.MainData.insert({name:‘3tai‘,age:25,url:‘http://www.cnblogs.com/3Tai/‘,time:new Date()})
WriteResult({ "nInserted" : 1 })
>

我们在插入时,使用的是JavaScript的基本写法,这里要注意的是字符串、数字、时间,有这几个不同的类型,执行后提示有一处改动,下面我们查看一下刚才插入的文档,这里使用最简单直接的全部检索:

> db.MainData.find().pretty()
{
        "_id" : ObjectId("560b83be22f39ad2d6004365"),
        "name" : "3tai",
        "age" : 25,
        "url" : "http://www.cnblogs.com/3Tai/",
        "time" : ISODate("2015-09-30T06:39:58.788Z")
}
>

使用find函数,可以获取结果,后面的pretty函数,可以格式化结果,是属于优化输出效果的。
至此,我们已经成功运行了mongodb,下一次我们和C#接轨

时间: 2024-10-10 17:49:17

mongodb在我这个C#下手眼中-01初识的相关文章

集腋成裘-14-MongoDB系列-01初识MongoDB

粗知拙见:将数据通过类似json的形式存储于文档中. window下MongoDB下载 安装只需要选择对应的文件夹即可,注意位置D:\software\MongoDB\ 1:配置环境变量并检验是否安装成功(mongod -help) 2:启动数据库服务 创建一个批处理文件,mongoDB.bat 其语法为 mongod --dbpath 路径 (mongod --dbpath D:\software\MongoDBDATA) 或者,直接运行以上命令(本机是配置了环境变量) 3:启动数据客户端 创

01 初识mysql

mysql架构关系型数据库和非关系型数据库存储引擎mysql中的几种引擎设置严格模式char和vachar TOC mysql架构 mysql数据库: C----->S架构软件 mysql数据库本质就是一个基于网络网络通信的软件 所有基于网络通信的软件,底层都是socket 关系型数据库和非关系型数据库 DBMS:数据库管理系统 关系型数据库: MySQL.Oracle.DB2.sql server..... 表结构 需要哪些字段 字段是什么类型 字段与字段类型 非关系型数据库: redis.m

《Lucene In Action》 01 初识Lucene

基于Lucene 3.0.1 1.Lucene简单定义 Lucene是高性能.可扩展的信息检索(IR)工具库.向用户提供了简单易用的索引和搜索API,屏蔽了内部复杂而先进的信息检索技术实现过程Lucene仅仅是一个提供搜索功能的类库,你还需要根据实际情况自行完成搜索程序的其他模块(网页抓取.文档处理.服务器运行.用户界面和管理等)Lucene的核心jar包很小,只有1M左右,核心之外,存在大量的扩展模块.另外你如果寻找一些成型的网页搜索.文档处理或搜索引擎,可以在Lucene wiki的技术支持

简话Angular 01 初识Angular 数据绑定

1. Angular有哪些突出优点 1) MVC 基于Html-Javascript 2) 依赖注入 3) 数据双向绑定,响应式页面设计 4) 模块化,自定义指令 2. 简话数据绑定 1) 代码: 1 <input type="text" ng-model="hello1"> 2 3 <input type="text" ng-model="hello2"> 4 5 <textarea ng-bi

mongodb非正常关闭无法启动

刚刚接触mongodb,遇到了个小问题,网上查到的资料好像都不是很全,总结记录下,希望对大家有帮助. 一.问题描述 在重新配置mongodb的主从时,非正常关闭了数据库[kill mongod进程],结果在重新启动时抛出错误如下 PS:正常应该是: mongod -f /mvnobss/users/mgousr01/mongodb/conf/master.conf --shutdown [email protected]:/mvnobss/users/mgousr01/mongodb/bin>.

[转]scp命令学习

原博客地址http://www.cnblogs.com/peida/archive/2013/03/15/2960802.html scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来.另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了.

Linux基础命令(2)

六.tar命令简介通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大.tar 命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件. tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案.利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件 或将几个文

Linux学习之scp命令

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的,可能会稍微影响一下速度.当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来.另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了.虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用. 1.命

每天一个linux命令(52):scp命令

scp 是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且 scp传输是加密的.可能会稍微影响一下速度.当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来.另 外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了.虽然 rsync比scp会快一点,但当小文件众多的情况 下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用.