设为首页 收藏本站
查看: 1290|回复: 0

[经验分享] Nosql数据库教程之初探MongoDB

[复制链接]
YunVN网友  发表于 2015-7-9 10:36:46 |阅读模式
  日期:2012/01/16  来源:GBin1.com

  大家都听说过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相关文件。

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

mongo
  你可以看到如下的界面:

  如果你看到以上的窗口内容,我们已近安装完毕,准备开始学习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()
  将看到如下内容:

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

步骤三:搜索记录
  你记得前面的命令吧? 它查询返回了所有的记录。如果你要查询指定的内容呢? 回答是使用selector。
  Selectors
  Selector是对于mongo来说类似sql中使用的where语句。它允许我们执行如下操作:


  • 指定必须匹配,类似, AND语句
  • 指定可选匹配,类似, OR语句
  • 指定必须存在
  • 等等...
  必须匹配的记录
  比方说,我们需要找到所有的女性,使用如下命令:

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

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

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

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

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

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

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


步骤四:记录排序
  使用Mongo我们需要使用sort命令来执行排序。和find命令类似,使用不同选项来设定不同排序结果
  和SQL不一样,我们这里升序和降序的关键字不同, 我们使用如下:
  升序: -1  
降序: 1
  这里是一个例子:

db.gbin1.find({gender: 'm', $or: [{nationality: 'english'}, {nationality: 'american'}]}).sort({nationality: -1});
  以上命令将返回所有的男性,国籍为english或者american,并且使用国籍的降序排列。

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

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

  你可以看到Arnold Schwarzenegger在Tony Curtis后面出现
  限制返回记录
  如果是一个非常大的数据集,我们想限制结果为2,怎么执行? Mongo提供了limit命令,类似MYSQL允许我们执行限制操作。我们使用上面的查询,但是只返回2个记录。如下:

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

  如果我们希望取得第三个或者第四个记录,忽略前面俩个呢? 如下:
.
  你将看到头俩个被忽略了。

步骤六:更新记录
  Mongo同时也提供了记录更新选项。使用find方法来查询需要更新的记录,然后执行更新。
  比如我们需要更新James Caan的记录,指定头发颜色是灰色,不是褐色。那么我们执行如下:

db.gbin1.update({first: 'james', last: 'caan'}, {$set: {hair_colour: 'brown'}});
  以上代码执行后,不会有任何的成功和失败的提示。你需要使用如下命令来查看更新:

db.gbin1.find({first: 'james', last: 'caan'});

  以上图片中我们看到了更新

步骤七: 删除记录
  如果你需要删除一个记录,你需要指定一些selector,否则你会删除全部记录。
  例如我们需要删除James Caan。使用如下命令:

db.gbin1.remove({first: 'james', last: 'caan'});
  和更新一样,没有任何提示成功与否。你需要自己查看。

db.gbin1.find({first: 'james', last: 'caan'});
  以上应该没有记录返回。如果没有返回记录,说明这个记录已经被删除。 如何删除所有记录呢?

db.gbin1.remove();
db.gbin1.find();
  运行以上你将什么记录都看不到了

总结:
  今天我们介绍了Mongodb是什么,为什么需要Mongodb,如何安装, 如何增删查改。如果你需要了解更多,请访问mongodb主站!
下一个教程,我们将介绍如何执行复杂的查询。 希望大家继续关注我们!
  相关文章: Nosql数据库教程之初探MongoDB - 第二部分
  来源:Nosql数据库教程之初探MongoDB - 第一部分

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-84713-1-1.html 上篇帖子: MySQL vs.MongoDB 各有胜负! 下篇帖子: 第一篇:MongoDB的安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表