Mongodb常用语法
介绍
什么是MongoDB ?
- MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
- 在高负载的情况下,添加更多的节点,可以保证服务器性能。
- MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
- MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
- MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
特点
- MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
- 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName=”Sameer”,Address=”8 Gandhi Road”)来实现更快的排序。
- 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
- 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
- Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
- MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
- Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
- Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。
- Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
- GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
- MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
语言支持
支持语言 | - | - | - | - | - |
---|---|---|---|---|---|
Java | PHP | Python | Ruby | Go | C |
C++ | C# | .NET | Scala | node.JS | Lisp |
JavaScript | Haskell | Erlang | Perl | - | - |
数据库
创建数据库
1 | use demo |
查看使用中的数据库
1 | db |
集合
创建集合
name:集合名称
options:可选参数, 指定有关内存大小及索引的选项
1 | db.createCollection(name, options) |
例子:1
db.createCollection("demoList")
字段 | 类型 | 描述 |
---|---|---|
capped | 布尔 | (可选)如果为 true,则创建固定集合。 固定集合是指有着固定大小的集合, 当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。 |
autoIndexId | 布尔 | (可选)如为 true,自动在 _id 字段创建索引。默认为 false。 3.2 之后不再支持该参数。 |
size | 数值 | (可选)为固定集合指定一个最大值,即字节数。 如果 capped 为 true,也需要指定该字段。 |
max | 数值 | (可选)指定固定集合中包含文档的最大数量。 |
查看已存在的集合
show collections;
删除集合
1 | db.集合名称.drop(); |
文档
插入文档
1 | db.集合名称.insert(document); |
语法格式:
1
2
3
4
5
6
7db.集合名称.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)document
:要写入的文档。writeConcern
:写入策略,默认为 1,即要求确认写操作,0 是不要求。ordered
:指定是否按顺序写入,默认 true,按顺序写入。注意:如果不存在集合名称,则插入时,会自动创建该集合并插入文档。
例子:
1
2
3
4
5
6
7db.demoList.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库2',
by: '菜鸟教程2',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 200
})
查看文档
1 | db.demoList.find(); |
更新文档
语法格式:
1
2
3
4
5
6
7
8
9db.集合名称.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
: 可选,默认是false,只更新找到的第一条记录,若为true,就把按条件查出来多条记录全部更新。writeConcern
:可选,抛出异常的级别。例子:
1
2
3
4
5// 只修改第一条记录
db.demoList.update({'title': 'MongoDB 教程'}, {$set:{'title': 'MongoDB'}})
// 修改多条记录
db.demoList.update({'title': 'MongoDB 教程'}, {$set: {'title': 'MongoDB'}}, {multi: true})只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。
删除文档
语法格式:
1
2
3
4db.集合名称.remove(
<query>,
<justOne>
)如果
MongoDB
是2.6 版本
以后的,语法格式如下:1
2
3
4
5
6
7db.集合名称.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)query
:(可选)删除的文档的条件。justOne
: (可选)如果设为 true 或 1,则只删除一个文档,
如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。writeConcern
:(可选)抛出异常的级别。例子
1
2
3
4
5
6
7
8// 按条件删除
db.demoList.remove({'title':'MongoDB 教程'})
// 删除第一条
db.demoList.remove(DELETION_CRITERIA, 1)
// 删除所有
db.demoList.remove({})
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 学弟不想努力了!
评论