Mongodb

来源:互联网 发布:nba马刺vs小牛数据 编辑:程序博客网 时间:2024/06/03 20:04

这里写图片描述

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

标准 URI 连接语法:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb:// 这是固定的格式,必须要指定。
  • username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库
  • host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。
  • portX 可选的指定端口,如果不填,默认为27017
  • /database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库。
  • ?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

    这里写图片描述
    例如:使用用户名fred,密码foobar登录localhost的baz数据库。

mongodb://fred:foobar@localhost/baz

创建数据库

MongoDB 创建数据库的语法格式如下:

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。

删除数据库

db.dropDatabase()

以下实例删除了 runoob 数据库中的集合 site:

> use runoobswitched to db runoob> show tablessite> db.site.drop()true> show tables> 

插入文档

db.COLLECTION_NAME.insert(document)db.COLLECTION_NAME.insertOne({"a": 3})db.COLLECTION_NAME.insertMany([{"b": 3}, {'c': 4}])db.COLLECTION_NAME.save(document)

插入文档你也可以使用 db.COLLECTION_NAME.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

更新文档

db.collection.update(   <query>,   <update>,   {     upsert: <boolean>,     multi: <boolean>,     writeConcern: <document>   })
  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如,inc…)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。
db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})

save()方法

db.collection.save(   <document>,   {     writeConcern: <document>   })

删除文档

db.collection.remove(   <query>,   {     justOne: <boolean>,     writeConcern: <document>   })

参数说明:

  • query :(可选)删除的文档的条件。
  • justOne : (可选)如果设为 true 或 1,则只删除一个文档。
  • writeConcern :(可选)抛出异常的级别。

如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):

>db.col.remove({})>db.col.find()

如果你只想删除第一条找到的记录可以设置 justOne 为 1

>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

查询文档

db.collection.find(query, projection)db.col.find({key1:value1, key2:value2}).pretty()  //key1和key2两个条件AND连接//key1和key2两个条件OR连接>db.col.find(   {      $or: [         {key1: value1}, {key2:value2}      ]   }).pretty()
  • query :可选,使用查询操作符指定查询条件
  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

    这里写图片描述

limit()方法(读取指定数量的数据)基本语法如下所示:

>db.COLLECTION_NAME.find().limit(NUMBER)

skip() 方法(跳过指定数量的数据)语法格式如下:

>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

注:

db.col.find({},{"title":1,_id:0}).limit(2)//补充说明://第一个 {} 放 where 条件,为空表示返回集合中所有文档。//第二个 {} 指定那些列显示和不显示 (0表示不显示 1表示显示)。db.COLLECTION_NAME.find().sort({KEY:1}).skip(10).limit(100)//当查询时同时使用sort,skip,limit,无论位置先后,最先执行顺序 sort再skip再limit。//sort({KEY:1}) 中key为列字段,1为升序,-1为降序

索引

语法中 Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。

>db.COLLECTION_NAME.ensureIndex({KEY:1})

聚合

MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。

>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)//例> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])//以上实例类似sql语句:select by_user, count(*) from mycol group by by_user

这里写图片描述

管道的概念

管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。
这里我们介绍一下聚合框架中常用的几个操作:

  • $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
  • $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
  • $limit:用来限制MongoDB聚合管道返回的文档数。
  • $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
  • $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
  • $group:将集合中的文档分组,可用于统计结果。
  • $sort:将输入文档排序后输出。
  • $geoNear:输出接近某一地理位置的有序文档。
//1$project实例,默认情况下_id字段是被包含的,如果要想不包含_id可以为0db.article.aggregate(    { $project : {        _id : 0 ,        title : 1 ,        author : 1 ,    }} ); //2.$match实例,$match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。 db.articles.aggregate( [                        { $match : { score : { $gt : 70, $lte : 90 } } },                        { $group: { _id: null, count: { $sum: 1 } } }                       ] );

内容汇总自 http://www.runoob.com/mongodb/mongodb-tutorial.html

原创粉丝点击