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#接轨
mongodb在我这个C#下手眼中-01初识的更多相关文章
- TensorFlow --- 01初识
由于博客园对Markdown支持不够友好,阅读此文请前往云栖社区:TensorFlow --- 01初识
- day24 01 初识继承
day24 01 初识继承 面向对象的三大特性:继承,多态,封装 一.继承的概念 继承:是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又可称基类或超类,新建的类称为派生类或者子类 cla ...
- day22 01 初识面向对象----简单的人狗大战小游戏
day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战 怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学
076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...
随机推荐
- 020.2.3 math类
内容:一个数的最小整数,平方,随机数其他数学上常用的,去API里面找些对象试一下,在Java.lang包里面 Math.ceil()返回一个大于这个小数的最小整数,比如12.56156,返回13 Ma ...
- windows下使用Git
如何在windows下使用Git? 通过这里下载Git bash,你就可以像在Linux命令行一样操作git工具. 进入Git bash环境,默认是在当前用户路径下. 在Linux下,我们有根目录,在 ...
- Centos7 KDE 桌面Konsole 光标错位解决方法
在使用linux 系统,桌面为KDE 时,在使用Konsole 时,光标的位置是错位的. 如下图效果 解决办法 用命令进入/home/cfox/.kde/share/apps/konsole 修改S ...
- Win32多线程之核心对象
CreateThread()传回两个值,用以识别一个新的线程.第一个值是个Handle, 这也是CreateThread()的返回值,大部分与线程有关的API函数都需要它.第二个值是由lpThrea ...
- php json格式化输出
1.json格式是适用于多种语言的数据格式,通用性高 2.在php中将array格式的数据转化为json格式 3.默认情况下转化后的json格式为一个串,需要将这个串格式化成相应的样式输出 主要的函数 ...
- Linux 嵌入式 开发环境 交叉编译安装
1.安装 Ubuntu 系统 安装完毕,系统 提示 重启,这个时候 请拔掉U盘,进行重启 OK. 2.安装 NFS 服务 3.安装 openssh服务 4.开启openSSH服务 5.就可以使用 Wi ...
- linux 编译ffmpeg 支持x264, x265
1. 前言 本教程涉及的ffmpeg, x264, x265 2. 环境依赖 2.1 删除系统中安装的ffmpeg等库 sudo apt-get --purge remove ffmpeg mplay ...
- sharepoint 搜索报错
配置sharepoint 拓扑架构,将两台服务器一起来爬网. 配置如下: $hostA = Get-SPEnterpriseSearchServiceInstance -Identity " ...
- ThinkPHP微信扫码支付接口
最近折腾微信扫码支付,看了微信官方文档,找了很多网页,发现和文档/demo不匹配,现在自己算是弄出来了(文件名称有所更改),贴出来分享一下 一.将有用的官方lib文件和使用的相关文件放置到vendor ...
- c++类模板分文件编写存在的问题
c++分文件编写的编译机制: 各个文件独立编译,如果在某.cpp文件中出现了函数调用,但是在此.cpp文件并没有对应函数的实现.此时就会在函数调用出生成特定的符号,在之后的链接过程完成函数调用. C+ ...