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
- Mongodb
- MongoDB
- mongodb
- mongodb
- mongodb
- MongoDB
- mongodb
- MongoDB
- MongoDb
- mongodb
- MongoDB
- mongodb
- mongodb
- MongoDB
- MongoDB
- mongoDB
- MongoDB
- MongoDB
- JS跨域请求的四种处理方式
- bzoj2565 最长双回文串
- 使用nohup让linux命令在后台运行
- 1792:迷宫(2.5基本算法之搜索)
- React-Redux
- Mongodb
- Spring Bean介绍
- java内存优化(1):使用String.intern()节省java堆内存
- ambari
- 如何实现一个账号仅能一个终端登录呢
- java 复习1
- USB扩展器插上键盘没有用
- 杂记2--QT布局管理器(QVBoxLayout,QHBoxLayout)不同部分比例大小设置方法
- HDU6201 | 2017 ACM-ICPC 亚洲区(沈阳赛区)网络赛-H transaction transaction transaction