MONGODB 笔记 安装入门
NodeJs 在前端领域越来越重要,但没有数据库配合始终干不了完整的事,现在重温mongodb,早日跨入MEAN的时代。
如果你熟悉JSON,上手mogodb应该是手到擒来。
关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合”
就是对应关系数据库中的“表”,“文档”对应“行”。
一: 下载
上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了
需要下载哪个版本看这里
我用的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 }
db.inventory.find({ type: "snacks" })
比较条件
比较条件也是最基本的查询条件之一,通过运算符的比较运算来筛选或排除文档,从而获取到我们想要的文档数据。
- 语法:
- { field: { op: value }}
- 示例:查询"inventory集合中包含quantity字段并且值大于1000的文档"。
- 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}})
数组条件
当字段包含数组,可以进行数组完全匹配或匹配特定的值。
单个元素匹配只需要传入元素的值即可,完全匹配需要传入一个数组,特定元素匹配需要"字段.索引"形式传入参数。
数组完全匹配:
- db.inventory.find( { tags: [ 'fruit', 'food', 'citrus' ] } );
单个元素匹配:
- db.inventory.find( { tags: 'fruit' } );
特定元素匹配:
- db.inventory.find( { 'tags.0' : 'fruit' } );
子文档条件
查询数据时,我们可能会遇到包含嵌入的子文档数据,如:
如果文档中包含嵌入的子文档,可以使用".key"的方式访问子文档节点,例如:
- db.mycol.find({"access.level":5});
复合查询 - AND
当查询条件为多个字段时,需要使用多字段复合条件查询,下面我们来学习一下,如何实现多字段复合查询。
在查询条件中指定多个字段条件,检索出所有满足条件的文档数据。
示例:查询inventory集合中type字段为food并且价格低于95的所有文档。
- db.inventory.find({$and:[{type: "food"},{ price: { $lt: 95 }}]});
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中如果不带参数将报错,旧版本说是会删除所有数据。


浙公网安备 33010602011771号