分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

1、MongoDB介绍
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
    * 面向集合存储,易存储对象类型的数据。
    * 模式自由。
    * 支持动态查询。
    * 支持完全索引,包含内部对象。
    * 支持查询。
    * 支持复制和故障恢复。
    * 使用高效的二进制数据存储,包括大型对象(如视频等)。
    * 自动处理碎片,以支持云计算层次的扩展性
    * 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
    * 文件存储格式为BSON(一种JSON的扩展)
    * 可通过网络访问
所谓“面向集合”(Collenction-Orented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定 义任何模式(schema)。
模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized document Format)。
MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
MongoDB把数据存储在文件中(默认路径为:/data/db,该目录必须存在,否则启动的时候会报错),为提高效率使用内存映射文件进行管理。
以上内容摘自:http://www.oschina.net/p/mongodb

2、下载及安装
下载地址:http://www.mongodb.org/downloads,选择合适的版本。
安装就是将下载的文件解压到你想存放的指定的目录即可,相比较于其它需要安装的数据库,这个简直是太简单了。

3、文件及目录介绍
在Windows下面,mongodb就只有一个bin目录以及bin目录以外的三个文件,相对bin目录中包括了如下文件:
bsondump.exe用于将导出的BSON文件格式转换为JSON格式
mongo.exemongoDB的客户端
mongod.exe用于启动mongoDB的Server
mongod.pdb
mongodump.exe用于从mongodb数据库中导出BSON格式的文件,类似于mysql的dump工具mysqldump
mongoexport.exe用于将mongodb中的数据库,导出为JSON,CSV或TSV的格式。使用示例:mongoexport --host mongodb1.example.net --port 37017 --username user --password pass --collection contacts
mongofiles.exe用于和mongoDB的GridFS文件系统交互的命令,并可操作其中的文件,它提供了我们本地系统与GridFS文件系统之间的存储对象接口。使用示例:mongofiles --hostname db1.example.net --port 37017 -d records list
mongoimport.exe用于将JSON,CSV或TSV等文件格式,导入到mongoDB数据库中,使用示例:mongoimport --db users --collection contacts --type csv --file /opt/backups/contacts.csv
mongooplog.exe用于从运行的mongod服务中拷贝运行日志到指定的服务器,主要用于增量备份,使用示例:mongooplog --from mongodb0.example.net --host mongodb1.example.net,备份还可以参看一下这篇BLOG:http://www.ttlsa.com/html/2052.html
mongoperf.exe用于独立检查mongoDB的I/O性能的工具,使用示例:mongoperf.exe < testPrefJson.txt (注:testPrefJson.txt存放测试的参数,以json格式,如:{nThreads:16,fileSizeMB:1000,r:true},更多参数参看该命令的帮助),在linux上配置iostat命令观察写入的效果
mongorestore.exe用于恢复导出的BSON文件到mongodb数据库中
mongos.exe用于注册系统处理
mongos.pdb
mongostat.exe当前mongod状态监控工具,像linux中监控linux的vmstat
mongotop.exe提供了一个跟踪mongod数据库花费在读写数据的时间,为每个collection都会记录,默认记录时间是按秒记录。
mongosniff(linux及unix有此工具)用于监控连接到mongodb的TCP/IP连接,类似于tcpdump。应用可以查看这篇BLOG:http://blog.nosqlfan.com/html/521.html

注:每个命令都可以通过参数"--help"获取帮助,不过更好的是阅读mongodb的manual,里面都有介绍。

4、启动服务端与客户
启动服务端:
运行命令:mongod.exe (注:此目录/data/db必须存在)
启动客户端:
运行命令:mongo.exe

5、CRUD示例
以下是示例,是根据mongoDB官网的online shell完成的

3. SavingHere's how you save a document to MongoDB:  db.scores.save({a: 99}); This says, "save the document '{a: 99}' to the 'scores' collection."Go ahead and try it. Then, to see if the document was saved, try  db.scores.find(); Once you've tried this, type 'next'.>db.scores.save({a:99});"ok">db.me.save({name:'tom',language:['java','c','python']});"ok">db.me.find();[   {   "name" : "tom",   "language" : [   "java",   "c",   "python" ],   "_id" : {   "$oid" : "52156671cc93742c160c66bc"   }   }]>db.scores.find();[   {   "a" : 99,   "_id" : {   "$oid" : "52156646cc93742c160c66bb"   }   }]>4. Saving and QueryingTry adding some documents to the scores collection:  for(i=0; i<10; i++) { db.scores.save({a: i, exam: 5}) }; Try that, then enter  db.scores.find(); to see if the save succeeded. Since the shell only displays 10 results at time,you'll need to enter the 'it' command to iterate over the rest.(enter 'next' when you're ready)>for(i=0;i<20;i++){db.scores.save({student:i,score:20})};"ok">db.scores.find();[   {   "a" : 99,   "_id" : {   "$oid" : "52156646cc93742c160c66bb"   }   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c0"   },   "student" : 3,   "score" : 20   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c1"   },   "student" : 1,   "score" : 20   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c2"   },   "student" : 0,   "score" : 20   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c3"   },   "student" : 2,   "score" : 20   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c4"   },   "student" : 5,   "score" : 20   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c5"   },   "student" : 4,   "score" : 20   },  {   "_id" : {   "$oid" : "52156720cc93742c160c66c6"   },   "student" : 7,   "score" : 20   },  {   "_id" : {   "$oid" : "52156720cc93742c160c66c7"   },   "student" : 6,   "score" : 20   },  {   "_id" : {   "$oid" : "52156720cc93742c160c66c8"   },   "student" : 9,   "score" : 20   }]>it[   {   "_id" : {   "$oid" : "52156720cc93742c160c66c9"   },   "student" : 10,   "score" : 20   },  {   "_id" : {   "$oid" : "52156720cc93742c160c66ca"   },   "student" : 11,   "score" : 20   },  {   "_id" : {   "$oid" : "52156720cc93742c160c66cb"   },   "student" : 12,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66cc"   },   "student" : 13,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66cd"   },   "student" : 14,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66ce"   },   "student" : 8,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66cf"   },   "student" : 15,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66d0"   },   "student" : 16,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66d1"   },   "student" : 17,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66d2"   },   "student" : 19,   "score" : 20   }]>it[   {   "_id" : {   "$oid" : "52156721cc93742c160c66d3"   },   "student" : 18,   "score" : 20   }]>5. Basic QueriesYou've already tried a few queries, but let's make them more specific.How about finding all documents where a == 2:  db.scores.find({a: 2}); Or what about documents where a > 15?  db.scores.find({a: {'$gt': 15}}); >db.scores.find({student:2});[   {   "_id" : {   "$oid" : "5215671fcc93742c160c66c3"   },   "student" : 2,   "score" : 20   }]>db.scores.find({a:{'$gt':12}});[   {   "a" : 99,   "_id" : {   "$oid" : "52156646cc93742c160c66bb"   }   }]>db.scores.find({student:{'$gt':12}});[   {   "_id" : {   "$oid" : "52156721cc93742c160c66cc"   },   "student" : 13,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66cd"   },   "student" : 14,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66cf"   },   "student" : 15,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66d0"   },   "student" : 16,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66d1"   },   "student" : 17,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66d2"   },   "student" : 19,   "score" : 20   },  {   "_id" : {   "$oid" : "52156721cc93742c160c66d3"   },   "student" : 18,   "score" : 20   }]>db.scores.find({student:{'$lt':12}});[   {   "_id" : {   "$oid" : "5215671fcc93742c160c66c0"   },   "student" : 3,   "score" : 20   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c1"   },   "student" : 1,   "score" : 20   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c2"   },   "student" : 0,   "score" : 20   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c3"   },   "student" : 2,   "score" : 20   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c4"   },   "student" : 5,   "score" : 20   },  {   "_id" : {   "$oid" : "5215671fcc93742c160c66c5"   },   "student" : 4,   "score" : 20   },  {   "_id" : {   "$oid" : "52156720cc93742c160c66c6"   },   "student" : 7,   "score" : 20   },  {   "_id" : {   "$oid" : "52156720cc93742c160c66c7"   },   "student" : 6,   "score" : 20   },  {   "_id" : {   "$oid" : "52156720cc93742c160c66c8"   },   "student" : 9,   "score" : 20   },  {   "_id" : {   "$oid" : "52156720cc93742c160c66c9"   },   "student" : 10,   "score" : 20   }]>db.scores.find({student:{'$eq':12}});[   ]>6. Query OperatorsQuery Operators:$gt is one of many special query operators. Here are few others:  $lt  - '<',   $lte - '<=',   $gte - '>=',  $ne  - '!='  $in - 'is in array',  $nin - '! in array'db.scores.find({a: {'$in': [2, 3, 4]}}); db.scores.find({a: {'$gte': 2, '$lte': 4}}); Try creating some queries, then type 'next.'>db.scores.find({student:{'$in':[12]}});[   {   "_id" : {   "$oid" : "52156720cc93742c160c66cb"   },   "student" : 12,   "score" : 20   }]>db.scores.save({student:'tom',age:15,language:['java','c','ruby']});"ok">db.scores.save({student:'tom1',age:16,language:['java','c','python']});"ok">db.scores.save({student:'tom2',age:16,language:['c','python']});"ok">db.scores.find({language:{'$in':['c']}});[   {   "language" : [   "java",   "c",   "ruby" ],   "_id" : {   "$oid" : "52156a7ecc93742c160c66da"   },   "student" : "tom",   "age" : 15   },  {   "language" : [   "java",   "c",   "python" ],   "_id" : {   "$oid" : "52156a8fcc93742c160c66db"   },   "student" : "tom1",   "age" : 16   },  {   "language" : [   "c",   "python" ],   "_id" : {   "$oid" : "52156a9dcc93742c160c66dc"   },   "student" : "tom2",   "age" : 16   }]>db.scores.find({language:{'$in':['python']}});[   {   "language" : [   "java",   "c",   "python" ],   "_id" : {   "$oid" : "52156a8fcc93742c160c66db"   },   "student" : "tom1",   "age" : 16   },  {   "language" : [   "c",   "python" ],   "_id" : {   "$oid" : "52156a9dcc93742c160c66dc"   },   "student" : "tom2",   "age" : 16   }]>7. UpdatesNow create a couple documents like these for updating:  db.users.save({name: 'Johnny', languages: ['ruby', 'c']});   db.users.save({name: 'Sue', languages: ['scala', 'lisp']}); Make sure they were saved by called db.users.find()Update the first document like so:  db.users.update({name: 'Johnny'}, {name: 'Cash', languages: ['english']}); >db.users.save({name:'Johnny',language:['java','c']});"ok">db.users.save({name:'Tome',language:['python','java']});"ok">db.users.find();[   {   "name" : "Johnny",   "language" : [   "java",   "c" ],   "_id" : {   "$oid" : "52156b66cc93742c160c66df"   }   },  {   "name" : "Tome",   "language" : [   "python",   "java" ],   "_id" : {   "$oid" : "52156b8bcc93742c160c66e2"   }   }]>db.users.find({name:'Tome'});[   {   "name" : "Tome",   "language" : [   "python",   "java" ],   "_id" : {   "$oid" : "52156b8bcc93742c160c66e2"   }   }]>db.users.update({name:'Tome'},{name:'Jack',language:['english']});"ok">db.users.find();[   {   "name" : "Johnny",   "language" : [   "java",   "c" ],   "_id" : {   "$oid" : "52156b66cc93742c160c66df"   }   },  {   "name" : "Jack",   "language" : [   "english" ],   "_id" : {   "$oid" : "52156b8bcc93742c160c66e2"   }   }]>8. Update OperatorsThe previous update replaced the entire document, but MongoDB alsosupports partial updates to documents. For example, you can set a value:  db.users.update({name: 'Cash'}, {'$set': {'age': 50} }); You can also push and pull items from arrays:  db.users.update({name: 'Sue'}, {'$pull': {'languages': 'scala'} });   db.users.update({name: 'Sue'}, {'$push': {'languages': 'ruby'} }); Give these a try, check the results, and then enter 'next'.>db.users.update({name:'Jack'},{'$set':{'age':50}});"ok">db.users.find();[   {   "name" : "Johnny",   "language" : [   "java",   "c" ],   "_id" : {   "$oid" : "52156b66cc93742c160c66df"   }   },  {   "name" : "Jack",   "language" : [   "english" ],   "_id" : {   "$oid" : "52156b8bcc93742c160c66e2"   },   "age" : 50   }]>db.users.update({name:'Jack'},{'$pull':{language:'java'}});"ok">db.users.find();[   {   "name" : "Johnny",   "language" : [   "java",   "c" ],   "_id" : {   "$oid" : "52156b66cc93742c160c66df"   }   },  {   "name" : "Jack",   "language" : [   "english" ],   "_id" : {   "$oid" : "52156b8bcc93742c160c66e2"   },   "age" : 50   }]>db.users.find();"ok">db.users.update({name:'Jack'},{'$pull':{language:'java'}});[   {   "name" : "Johnny",   "language" : [   "java",   "c" ],   "_id" : {   "$oid" : "52156b66cc93742c160c66df"   }   },  {   "name" : "Jack",   "language" : [   "english",   "java" ],   "_id" : {   "$oid" : "52156b8bcc93742c160c66e2"   },   "age" : 50   }]>db.users.find();"ok">db.users.update({name:'Jack'},{'$set':{age:60}});[   {   "name" : "Johnny",   "language" : [   "java",   "c" ],   "_id" : {   "$oid" : "52156b66cc93742c160c66df"   }   },  {   "name" : "Jack",   "language" : [   "english" ],   "_id" : {   "$oid" : "52156b8bcc93742c160c66e2"   },   "age" : 50   }]>db.users.update({name:'Jack'},{'$set':{age:60}});"ok">db.users.find();[   {   "name" : "Johnny",   "language" : [   "java",   "c" ],   "_id" : {   "$oid" : "52156b66cc93742c160c66df"   }   },  {   "name" : "Jack",   "language" : [   "english" ],   "_id" : {   "$oid" : "52156b8bcc93742c160c66e2"   },   "age" : 60   }]>9. Deleting dataTo delete matching documents only, add a query selector to the remove method:  db.users.remove({name: 'Sue'});To delete everything from a collection:  db.scores.remove();>db.users.remove({name:'Johnny'});"ok">db.users.find();[   {   "name" : "Jack",   "language" : [   "english" ],   "_id" : {   "$oid" : "52156b8bcc93742c160c66e2"   },   "age" : 60   }]>db.users.remove();"ok">db.users.find();[   ]

6、MongoDB与RDBMS的比较与使用场景
不要简单的拿MongoDB与其它的RDBMS进行性能读写的场景比较,如mysql中的一个单表带索引的查询,与将这些数据放到mongoDB中,来比较谁的查询效率会更高,这种比较是没有意义的,就像飞机、轮船,汽车和自行车比较谁更快一样,如果是在很短的路程范围之内,是无法比较的,并且他们各自有各自的应用场景,在各处的应用场景中都能够发挥出很好的性能。MongoDB专注的是分布式、大容易存储,在大对象的处理处理会更有优势,如一个很复杂的对象,如果是存入到RDBMS中,可能会分为几个甚至于10几个表,查询数据的时候就会根据主外键到这10几个表中去关联数据;而MongoDB是基于是文档对象,存入到MongoDB中只需要放在一个collection中即可,查询的时候也只需要一下就全部查出来了,当然这只是一个方面而已。

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

MongoDB入门示例及介绍相关推荐

  1. mongoDB 入门指南、示例

    http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongoDB 入门指南.示例 上一篇:简单介绍mongoDB 一.准备工作 ...

  2. Spring入门示例及相关概念介绍

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Spri ...

  3. Java日志框架 -- 日志框架介绍、日志门面技术、JUL日志(JUL架构、JUL入门示例、JUL日志级别、JUL日志的配置文件)

    1. 日志的概念 日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断问题的追踪以及理解系统的活动等重要作用. 2. Java日志框架 问题: 控制日志输出的内容 ...

  4. TIA博途中变长数组的介绍与使用入门示例

    TIA博途中变长数组的介绍与使用入门示例 使用变长数组的注意事项: 接口参数Array[*] of -,实参使用指定类型数组: 可以使用的范围:FC的Input.InOut,FB的InOut: FC或 ...

  5. 【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门示例

    一. 工作区域详解 1. Scence视图 (场景设计面板) scence视图简介 : 展示创建的游戏对象, 可以对所有的游戏对象进行 移动, 操作 和 放置; -- 示例 : 创建一个球体, 控制摄 ...

  6. JVM插桩之一:JVM字节码增强技术介绍及入门示例

    字节码增强技术:AOP技术其实就是字节码增强技术,JVM提供的动态代理追根究底也是字节码增强技术. 目的:在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修 ...

  7. 微信小游戏开发入门:示例代码介绍

    什么是微信小游戏? 看前几天的科技新闻,微信中的"跳一跳"小游戏从去年12月发布,截至到今年3月份已经积累了3.9亿玩家,这是一个多么恐怖的数字,"跳一跳"游戏 ...

  8. mongodb入门的几篇文章

    2019独角兽企业重金招聘Python工程师标准>>> mongoDB 入门指南.示例 比较简洁概要的描述了mongodb中常用的操作. 8天学通MongoDB 从安装,简单的增删改 ...

  9. Spring Boot MongoDB 入门

    1. 概述 可能有一些胖友对 MongoDB 不是很了解,这里我们引用一段介绍: FROM <分布式文档存储数据库 MongoDB> MongoDB 是一个介于关系数据库和非关系数据库之间 ...

最新文章

  1. 宏基因组扩增子3统计绘图:中文首发,最详系,零基础(箱线图、散点图、热图、曼哈顿图、火山图、韦恩图、三元图、网络图)
  2. 一:(1.4)了解MVC之区域
  3. Python字符串讲解举例—工资字符串
  4. LeetCode之Add Two Numbers
  5. NanShan作者:风景未变人已变
  6. 太难了!经营12年的明星机构都关停了,却还是有玩家疯狂入局
  7. 【JavaScript回顾】闭包
  8. 爱帮网“搜索+社区”就地展开
  9. cad lisp 背景遮罩_AutoCAD心得体会
  10. 你所不知道的我国交通工程早期经历了怎样的发展?
  11. 考研题目 第二章线性表
  12. Flutter高仿微信-第52篇-群聊-清空聊天记录
  13. 【Neuralink 与大脑的神奇未来】Part 2:大脑
  14. 用html做相片墙加音乐,把照片做成视频 所有图片像墙一样展示 图片墙动态展示特效...
  15. 使用lombok编写优雅的Bean对象
  16. PHP:PECL 安装扩展
  17. 护眼灯A级和AA级有什么区别?2022双十一国AA台灯有必要
  18. “软件中国2006年度风云榜”获奖名单隆重揭晓
  19. 机房收费文档之软件需求说明书
  20. 有什么便签可以直接当桌面吗?可以显示出便签全部内容

热门文章

  1. 开源一周岁,MindSpore新特性巨量来袭
  2. 【昇腾】【玩转Atlas200DK系列】为Atlas 200 DK制作python环境离线安装包
  3. 线上一个数组查询遇到的坑
  4. 红橙Darren视频笔记 自定义View总集篇
  5. Android笔记 notification
  6. 欢迎各位小伙伴们关注我的公众号,可以随时跟我在微信上进行交流
  7. AI实战 | Tensorflow自定义数据集和迁移学习(附代码下载)
  8. 初始化_Linux的内存初始化
  9. 释放变量所指向的内存_前端基础突破(二)内存回收与内存泄漏
  10. php文件断点续传,PHP实现文件下载断点续传详解