mongodb基础

mongDB学习手记


呵呵,大家好啊,今天我呢学习了mongoDB,由于技术能力非常有限,加之本人语言水平有限,错误之处还请多多海涵,并希望每一位指出我的错误


好了,接下来进入我么的mongDB的了解之旅把...


学习一门技术,不是立刻去使用它,而是先去了解他,如果你对这一种技术都不了解,谈什么 "使用"?
呵呵,其实我刚开始学习的时候就是喜欢先使用,更本不想了解这个技术是做什么的。
好了,那么下面开始把...


  NoSql简介:
NoSQL(Not Only SQL ),意即"不仅仅是SQL" ,指的是非关系型的数据库 。
是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。
NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。 
关系型数据库中的表都是存储一些格式化的数据结构,每条记录的字段的组成都一样,即使不是每条记录都需要所有的字段,
但数据库会为每条数据分配所有的字段。而非关系型数据库以键值对(key-value)存储,它的结构不固定,每一条记录可以有不一样的键,
每条记录可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。

NoSql数据库优缺点:


在优势方面主要体现在下面几点:
* 简单的扩展
* 快速的读写
* 低廉的成本
* 灵活的数据模型


在不足方面主要有下面几点:
* 不提供对SQL的支持
* 支持的特性不够丰富
* 现有的产品部够成熟




MongoDB简介:
MongoDB是用 "C++" 语言编写的非关系型数据库。特点是 "高性能"、"易部署"、"易使用",存储数据十分方便,主要特性有:
面向集合存储,易于存储对象类型的数据
模式自由
支持动态查询
支持完全索引,包含内部对象
支持复制和故障恢复
使用高效的二进制数据存储,包括大型对象
文件存储格式为BSON(一种JSON的扩展)






想要更详细的了解的话,建议大家看看哦:http://zh.wikipedia.org/wiki/NoSQL 还是非常详细的说




mongodb下载地址:http://www.mongodb.org/downloads 大家可以去下载哦...


我用的是32位的,大家的是多少位的操作系统就下载多少位的把,请勿乱下,哈哈...




好了,简单的了解了下我么的mongodb那么,接下来,我么需要实际应用的操作下了,那么下面就是 "入门篇"


工欲善其事,必先利其器:
从官网上下载了mongodb后,我么解压里面的文件,其中,解压的结构如下:

* bin目录
* GNU-AGPL文件
* README文件
* THIRD-PARTY-NOTICES文件


那么,只有bin才是我么想要的,打开bin目录,我么会发现,问价内里面有很多的应用程序,
  在里面的命令有几个会是我么常用的,所以这里就先不说明了。


安装非常简单,打开   我的电脑(win7下是计算机...)  ---- >  点击 "高级系统设置"   ---->  点击 "环境变量"
将你安装的mongodb的路径\bin放入在环境变量的Path下就行了




好的,假设你已经  了解mongodb  + 环境搭建完毕  那么你完全可以学习下面的内容了,好的进入下一章




   简单实战应用:

既然只是有了,环境有了,那么剩下来的就是实践了,那么,首先我么需要启动我么的mongodb服务,怎么启动呢???


在启动之前,我么还需要做一件事情,我么需要手动的创建一个存放mongDB的仓库,我是在的本地E盘下创建了
一个目录,那么大家随意...


打开Dos窗口,在窗口里面输入  mongod --dbpath=E:\mongodata //dbpath=E:\mongodata那么这里就是你么仓库的位置了


当执行完毕后,你么会看到许多的数据,其中我么的mongodb占用的是27017端口


但是,每一次我么都需要在Dos窗口输入这个命令,极其的麻烦,那么这里我给大家推荐几个小小的技巧把


* 创建批处理程序 :mongod --dbpath=E:\mongodata 将这一段话保存为 ".bat"文件就行了,每次点击就可以启动服务了
*加入到服务中
E:\mongodb\bin\mongod.exe --logpath 
E:\mongo_log\mongodb.log --logappend --dbpath 
E:\mongo_data --directoryperdb --serviceName MongoDB --install


这是一段命令,在Dos中输入这段命令,可以将其写入到服务中,并且开机就可以启动此服务了
不过,我个人觉得还是"批处理"的好,这个随大家高兴




好的,服务已经启动完成了,那么,下面我么就可以连接了,如何连接呢?
在Dos窗口中输入mongo ip:port就可以进行连接了,如果想连接到外部的服务上,那么就将ip改成需要来连接的ip
其实这个命令,在本地上是不用输入ip和port的,不信自己试试,嘿嘿...






  常用命令的介绍与使用:


好了,假设你之前学习过MYSQL或者是Oracle,都会有创建数据库,表,字段等等把,那么我么的非关系型数据库也是存在这些的
只不过一些叫法是不同的,但是功能都差不多了...


首先创建 "数据库"

use命令
* use db1 //这样就创建了一个数据库了

* use命令简单介绍一下:当我么使用use命令的时候是创建数据库,但是,该数据库存在的话,那么就会进入此数据库
 而不是创建数据库了,所以 "use"创建数据库 被称为  "隐士创建"






查看 "数据库"
* show dbs;


查看当前所在的 "数据库" 

* db


查看当前数据库中所有的集合(表)

* show tables 或者使用 show collections

删除 "数据库" "db.dropDataBase()"




  上面只是创建了一个简单的数据库,数据库中应该存在表,但是这里称为(集合),所以下面带大家学习如何创建集合把


创建集合分为两种方式,那么是哪两种方式呢?

* 显示创建

db.createCollection("aa"); //里面的名称自取


* 隐士创建
db.ax.insert({name:"JF",age:18}) //这里的数据形式的是JSON形式的


那么,为什么下面会被认为是隐士创建的呢?因为,insert()是插入数据
但是,在我么的数据库中不存在此集合,那么就会创建db.ax的集合了,所以,称为隐身创建





当我么创建好了一个 "集合" 后,你么打开存放数据的哪个仓库就会发现多出几个文件了,那么,刚开始创建数据库是不会出现的
因为没数据....




  嗯,好的,接着我么下面的来学习把,下面我么需要学习的就是,往我么的集合中 "插入" 一条数据了,嘿嘿,其实上面已经揭晓了
  但是,我么还有增加多条数据没有说哦,所以啦,请看下面操作




* 增加一条数据命令  db.集合名称.insert({xx:xx,xx:xx})

db.base.insert(name:"JF",age:18)



*增加多条数据:
可能前面我忘记说了,其实MongoDB支持JS的shell命令的,哈哈,其实,我么在上面调用的 dropDataBase()就是
JS的代码,通过查看底层的源码可以得知哦....




for(var x=1;x<101;x++){
db.base.insert({name:"name"+x,age:x});
}
这样,我么就循环增加了100条数据了,哈哈哈....
这个时候在会打开生成出来的文件,你会看到你不懂的东西...


那么,这里我就先说下,如何查看数据把,否则,增加成不成功都不知道呢!
使用db.集合.find()就可以查看了,非常的简单把。




删除集合中的文档,使用命令 db.集合名称.remove({删除条件})


删除带参数与不带参数的区别:


带参数
* db.base.remove({name:"JF"})
那么,在base集合中的JF就会被删除了


不带参数
* db.base.remove()
那么,我么集合中的所有数据都会被删除的


查询集合中的文档
带参数的与不带参数的区别,这里的区别和上面是一样的了,如果不指定参数的话,那么就查询出集合中所有的数据了
不过还是写一下比较好。


带参数:
* db.base.find({name:"name3"})
那么,通过这个信息就可以查找出指定的数据了

不带参数:
      * db.base.find()
那么,查询出来的数据就是集合中的全部数据了








下面,我么来学习  "投影查询"把,查询集合中的文档,但会某些特定的键值


查询出不带age的字段
* db.base.find({},{age:0});
当我么执行完毕后,那么就会除了age的字段不会显示出来,那么其他的字段都会显示的


投影查询我这几就简单的说了一下,如果有兴趣的朋友,可以去查看一些资料





常用运算操作:


> < >= <= != 这些基本的逻辑运算


查询年龄大于2岁的

*  db.base.find({age:{$gt:2}}); //$gt : 大于

查询年龄大于2岁的
* db.base.find({age:{$lt:2}}) //$lt : 小于




大于等于2岁的
* db.base.find({age:{$gte:2}}) //gte : 大于等于


小于等于2岁的
* db.base.find({age:{$lte:2}}) //lte : 小于等于


不等于2岁的
* db.base.find({age:{$ne:2}}) //ne : 不等于







常用操作  统计 + 排序 + 分页


统计总数:count()
db.base.count()
* 通过这个命令我么就可以知道我么总共有多少条数据了


查询出来的数据做一次统计
db.base.find().count()
* 当查询出的数据就作为总数统计


db.base.find({age:{$lt:5}}).count()
* 当查询出小于5岁的统计多少人



排序:sort()


db.base.find().sort({age:1})


分页:skip() And limit()


db.base.find().skip(2).limit(3);
* 重第二条数据开始,并且每次显示数据就显示3条数据

db.base.find().sort({age:-1}).skip(2).limit(3)
* 往后面开始倒数,然后每页显示3条数据


db.base.find().sort({age:-1}).skip(2).limit(3).count()
* 计算查询的数据


不好意思哈,今天就先给大家带来这些内容了,这个手记还会再次更新的,希望大家多多支持我...













































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值