当前位置:数据库 > mongodb >>

Nosql数据库教程之初探MongoDB - 第一部分

Nosql数据库教程之初探MongoDB

大家都听说过nosql解决方案吧?现在是web开发中很流行的技术。 是不是也有听说过MongoDB? 你是不是准备好了来学习一下web开发中最酷的技术之一MongoDB?

在这个系列教程中,我们将介绍帮助大家了解MongoDB,让大家能够像Mysql一样熟练的应用MongoDB到web开发中去。 希望大家喜欢!

为什么使用MongoDB?

在面对对象的开发过程中,我们都被鼓励尝试将逻辑的模型应用到代码开发中去,因此我们使得代码在概念上更加容易理解。当我们需要这样做的时候,我们最好能够清晰的看到逻辑操作的互动及其信息的处理。

那么假设如果你可以将需要使用的程序化模型直接保存的话呢?如果你可以直接保存它们而不需要保存数据库中表里面的一行一行数据呢? 学习MongoDB,你就可以实现这个功能!

在这个教程中,我们将学习基本的MongoDB,例如,创建,更新和删除数据库和记录,执行复杂的查询并且使用MapReduce来执行初级的数据挖掘。那么废话不说,我们现在开始!

步骤一:安装Mongo

我们需要在这个地址下载MongoDB。

在这个地址中我们需要寻找支持你的平台和架构的安装,我的操作系统是win7,这里下载使用的是2.0.2 for Windows 64-bit。 (GBin1友情提醒:注意大家不要下载nightly build,因为它们可能不稳定)

直接解压安装完毕后,请创建一个数据库文件夹,这里我创建在C:\WS-GBIN1\mongodb\data\db

然后运行数据库启动命令如下:


 
mongod --dbpath C:\WS-GBIN1\mongodb\data\db
这个时候会在C:\WS-GBIN1\mongodb\data\db目录下创建Mongdb相关文件。Nosql数据库教程之初探MongoDB - gbin1.com

 

 

然后,请运行命令行 cmd。, 然后找到你安装的Mongodb目录下的bin目录,运行如下命令:

mongo

你可以看到如下的界面:


 

Nosql数据库教程之初探MongoDB - gbin1.com

如果你看到以上的窗口内容,我们已近安装完毕,准备开始学习MongoDB!

命令行说明:

组件

bin/mongod - The database process.
bin/mongos - Sharding controller.
bin/mongo - The database shell (uses interactive javascript).

工具

bin/mongodump - MongoDB dump tool - for backups, snapshots, etc..
bin/mongorestore - MongoDB restore a dump
bin/mongoexport - Export a single collection to test (JSON, CSV)
bin/mongoimport - Import from JSON or CSV
bin/mongofiles - Utility for putting and getting files from MongoDB GridFS
bin/mongostat - Show performance statistics

步骤二: 创建一个数据库并且插入记录

初始化后,没有数据库创建。没关系只要我们插入记录,它会立刻自己创建。拷贝如下内容到命令行窗口:

db.gbin1.insert({
    first: 'matthew',
    last: 'setter',
    dob: '21/04/1978',
    gender: 'm',
    hair_colour: 'brown',
    occupation: 'developer',
    nationality: 'australian'
});
db.gbin1.insert({
    first: 'james',
    last: 'caan',
    dob: '26/03/1940',
    gender: 'm',
    hair_colour: 'brown',
    occupation: 'actor',
    nationality: 'american'
});
db.gbin1.insert({
    first: 'arnold',
    last: 'schwarzenegger',
    dob: '03/06/1925',
    gender: 'm',
    hair_colour: 'brown',
    occupation: 'actor',
    nationality: 'american'
});
db.gbin1.insert({
    first: 'tony',
    last: 'curtis',
    dob: '21/04/1978',
    gender: 'm',
    hair_colour: 'brown',
    occupation: 'developer',
    nationality: 'american'
});
db.gbin1.insert({
    first: 'jamie lee',
    last: 'curtis',
    dob: '22/11/1958',
    gender: 'f',
    hair_colour: 'brown',
    occupation: 'actor',
    nationality: 'american'
});
db.gbin1.insert({
    first: 'michael',
    last: 'caine',
    dob: '14/03/1933',
    gender: 'm',
    hair_colour: 'brown',
    occupation: 'actor',
    nationality: 'english'
});
db.gbin1.insert({
    first: 'judi',
    last: 'dench',
    dob: '09/12/1934',
    gender: 'f',
    hair_colour: 'white',
    occupation: 'actress',
    nationality: 'english'
});


没问题的话,我们确认一下数据库内容,使用如下命令:

db.gbin1.find()

将看到如下内容:

Nosql数据库教程之初探MongoDB - gbin1.com

以上代码中显示了所有我们创建的记录,需要提醒大家的是id字段。如果你不指定ID的话,mongodb自动为你生成。这是一个唯一标示。

你可以看到我们插入的所有记录,现在我们准备查询。

步骤三:搜索记录

你记得前面的命令吧? 它查询返回了所有的记录。如果你要查询指定的内容呢? 回答是使用selector。

Selectors

Selector是对于mongo来说类似sql中使用的where语句。它允许我们执行如下操作:

  • 指定必须匹配,类似, AND语句
  • 指定可选匹配,类似, OR语句
  • 指定必须存在
  • 等等...

必须匹配的记录

比方说,我们需要找到所有的女性,使用如下命令:

db.gbin1.find({gender: 'f'});

Nosql数据库教程之初探MongoDB - gbin1.com

查询所有的男性呢? 很简答,如下:

db.gbin1.find({gender: 'm'});

Nosql数据库教程之初探MongoDB - gbin1.com

多条件查询

下面语句将查询男性演员或者国籍是english

db.gbin1.find({gender: 'm', $or: [{nationality: 'english'}]});

Nosql数据库教程之初探MongoDB - gbin1.com

如果需要知道国籍为english或者american呢? 很简单,如下:

db.gbin1.find({gender: 'm', $or: [{nationality: 'english'}, {nationality: 'american'}]});

Nosql数据库教程之初探MongoDB - gbin1.com

步骤四:记录排序

使用Mongo我们需要使用sort命令来执行排序。和find命令类似,使用不同选项来设定不同排序结果

和SQL不一样,我们这里升序和降序的关键字不同, 我们使用如下:

升序: -1
降序: 1

这里是一个例子:

db.gbin1.find({gender: 'm', $or: [{nationality: 'english'}, {nationality: 'american'}]}).sort({nationality: -1});

以上命令将返回所有的男性,国籍为english或者american,并且使用国籍的降序排列。

Nosql数据库教程之初探MongoDB - gbin1.com

那么如何使得国籍降序,而名字使用升序排列呢? 如下:

db.gbin1.find({gender: 'm', $or: [{nationality: 'english'}, {nationality: 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,