MONGODB 笔记 安装入门

NodeJs 在前端领域越来越重要,但没有数据库配合始终干不了完整的事,现在重温mongodb,早日跨入MEAN的时代。

如果你熟悉JSON,上手mogodb应该是手到擒来。

关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合”

就是对应关系数据库中的“表”,“文档”对应“行”。

 

一: 下载

      上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了

     需要下载哪个版本看这里 

   http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/?_ga=1.225048218.145726827.1441889983

 

我用的win7 64位系统安装 直接下载的这个 mongodb-win32-x86_64-3.0.6-signed.msi。

  

  安装完毕后 

 

  ②:运行,输入cmd,首先进入到“mongodb”的路径,然后运行mongod开启命令,同时用--dbpath指定数据存放地点为“db”文件夹。  

 

 

mongodb采用27017端口,那么我们就在浏览器里面键入“http://localhost:27017/”,

             打开后,

 

这样mongodb就启动了。

 

开始练习 :

我们再打开一个cmd窗口,进入bin目录 执行mongo 命令打开shell,其实这个shell就是mongodb的客户端,

同时也是一个js的编译器,默认连接的是“test”数据库。

 

 

 

 

<1>  insert 操作

             好,数据库有了,下一步就是集合,这里就取集合名为“person”,要注意的就是文档是一个json的扩展(Bson)形式。

 

<2> find 操作

       我们将数据插入后,肯定是要find出来,不然插了也白插,这里要注意两点:

           ① “_id": 这个字段是数据库默认给我们加的GUID,目的就是保证数据的唯一性。

 

 

相等条件是最简单常用的的查询操作,查询条件是{ field:value }格式的BSON对象。

基本语法:

  •  

    { field: value }
示例:查询"inventory集合中所有type字段为snacks的文档";

 

 db.inventory.find({ type: "snacks" })

比较条件

比较条件也是最基本的查询条件之一,通过运算符的比较运算来筛选或排除文档,从而获取到我们想要的文档数据。

  • 语法:
    1. { field: { op: value }}
  • 示例:查询"inventory集合中包含quantity字段并且值大于1000的文档"。
    1. db.inventory.find({ quantity: { $gt: 1000}});

     

相信你已经发现了示例中的$gt是我们之前没有遇见过的字段。

没错!如你所想,$gt就是比较运算符的一种,代表"大于",下面我们一起来介绍MongoDB中常见的一些运算符:大于($gt)、大于等于($gte)、小于($lt)、小于等于($lte)、不等于($ne)、包含于($in)、不包含于($nin)。

 

通过MongoDB中提供的丰富运算符,可以帮助你精确的来检索数据,比如数值型的字段可以使用$gt、$gte、$lt、$ne等运算符来比较,数组条件的可以使用$in、$nin来实现。

 

从person集合中找出所有年龄(age)大于40岁的记录?

 

 db.person.find({age:{$gt:40}})

数组条件

当字段包含数组,可以进行数组完全匹配或匹配特定的值。

单个元素匹配只需要传入元素的值即可,完全匹配需要传入一个数组,特定元素匹配需要"字段.索引"形式传入参数。

数组完全匹配:

  1. db.inventory.find( { tags: [ 'fruit', 'food', 'citrus' ] } );

单个元素匹配:

  1. db.inventory.find( { tags: 'fruit' } );

特定元素匹配:

 

  1. db.inventory.find( { 'tags.0' : 'fruit' } );

子文档条件

查询数据时,我们可能会遇到包含嵌入的子文档数据,如:

如果文档中包含嵌入的子文档,可以使用".key"的方式访问子文档节点,例如:

  1. db.mycol.find({"access.level":5});

复合查询 - AND

当查询条件为多个字段时,需要使用多字段复合条件查询,下面我们来学习一下,如何实现多字段复合查询。

在查询条件中指定多个字段条件,检索出所有满足条件的文档数据。

示例:查询inventory集合中type字段为food并且价格低于95的所有文档。

 

  1. db.inventory.find({$and:[{type: "food"},{ price: { $lt: 95 }}]});
示例:查询person集合中年龄(age)大于30岁,并且名字(name)为"Lucy"的数据。
db.person.find({$and:[{age:{$gt:30}},{name:"Lucy"}]});
 

复合查询 - OR

当有多个查询条件但只需满足其中一个条件就可时,我们就可以使用$or运算符。

$or条件为一个数组类型的值,每个数组元素为一个BSON对象。

示例:inventory集合中检索数量(qty)大于100或者($or)价格(price)小于9.95的所有数据。

db.inventory.find(                     
 $or: [                            
{ qty: { $gt: 100 } },                            
{ price: { $lt: 9.95 } }                           
]                    
} );

示例:在person集合中查一下,状态(status)为"A"或年龄(age)为30的数据。 

 

 

db.person.find({$or:[{status:"A"},{age:30}]})
 
 
 

 

 <3> update操作

      update方法的第一个参数为“查找的条件”,第二个参数为“更新的值”

 

   执行db.person.update({查找值},{更新值})

 

 

 

<4> remove操作

  • 语法:

     

     db.collection.remove( query, justOne )
  • 参数:

    query:BSON类型,删除文档的条件。

    justOne:布尔类型,true:只删除一个文档,false:默认值,删除所有符合条件的文档。

 

   remove中如果不带参数将报错,旧版本说是会删除所有数据。

 

 

posted @ 2015-09-11 17:43  红叶舞秋山  阅读(253)  评论(0)    收藏  举报