1.与关系型数据库(MySQL)的对比
document(文档)<-> 一行记录
collection(集合) <-> Table(表)
database(数据库)<-> database
2.crud操作
创建
> user = {'name': 'sosop', 'age': 18, 'gender': 'male'} { "name" : "sosop", "age" : 18, "gender" : "male" } > db.users.insert(user) WriteResult({ "nInserted" : 1 })
查询
db.users.insert(user) WriteResult({ "nInserted" : 1 }) > db.users.find() { "_id" : ObjectId("549557d23359eef64b07bb46"), "name" : "sosop", "age" : 18, "gender" : "male" } > db.users.findOne() { "_id" : ObjectId("549557d23359eef64b07bb46"), "name" : "sosop", "age" : 18, "gender" : "male" }
更新
user.birthday = new Date('1996-01-01') ISODate("1996-01-01T00:00:00Z") b.users.update({'name': 'sosop'},user) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : ObjectId("549557d23359eef64b07bb46"), "name" : "sosop", "age" : 18, "gender" : "male", "birthday" : ISODate("1996-01-01T00:00:00Z") }
删除
db.users.remove({'name': 'sosop'}) WriteResult({ "nRemoved" : 1 })
3.修改器的使用
$set:键不存在则创建,存在则修改
> db.users.find() { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 18, "gender" : "male", "birthday" : ISODate("1996-01-01T00:00:00Z") } > db.users.update({'name': 'sosop'}, {$set: {'birthday': new Date('1996-03-11')}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 18, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z") } > db.users.update({'name': 'sosop'}, {$set: {'email': 'sosopish@163.com'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 18, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com" }
$inc:增加减少
> db.users.update({'name': 'sosop'}, {$inc: {'age': 10}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.findOne() { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 28, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com" } > db.users.update({'name': 'sosop'}, {$inc: {'age': -2}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com" }
$push
> db.users.update({'age': 26}, {$push: {'phone': "88888888888"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888" ]
$addToSet
db.users.update({'name': 'sosop'}, {$addToSet: {'phone': '66666666666'}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666" ] } db.users.update({'name': 'sosop'}, {$addToSet: {'phone': {$each: ['99999999999', '000000000']}}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999", "000000000" ] }
$pop:{key: 1} 从尾部删除 {key: -1}从头部删除
$pull:{key: value} 删除指定元素
数组定位修改器
db.users.update({'name': 'sosop'}, {$set: {'phone.$.xxx': 'xxx'}}
4.upsert更新或创建,同时避免静态
update({}, {}, true)
save: 存在时更新,否则插入
update({}, {}, true, true): 多文档更新
5.查询
find() find({}) find({}, {field: 1|0...})
> db.users.find({'age': {$gte: 18, $lte: 30}}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] }
$lt $gt $lte $gte $ne
$in $nin
db.users.find({'phone': {$in: ['666666666', '66666666666']}}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] }
$or
> db.users.find({$or: [{'name': 'sosop'}, {'age': 18}]}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] }
$not $mod
6.特定类型查询
null
> db.users.find({'name': {$exists: true}}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] } > db.users.find({'addr': {$exists: true}}) >
reg:
db.users.find({'name': /sosop/}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] } db.users.find({'name': /\S/i}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ]
数组查询
> db.users.find({'phone': {$all: ['88888888888', '99999999999']}}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] }
> db.users.find({'phone': {$size: 3}}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] }
> db.users.find({'name': 'sosop'},{'phone': {$slice: 1}}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888" ] } > db.users.find({'name': 'sosop'},{'phone': {$slice: 2}}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666" ] } > db.users.find({'name': 'sosop'},{'phone': {$slice: -1}}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "99999999999" ] } > db.users.find({'name': 'sosop'},{'phone': {$slice: [2,3]}}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "99999999999" ] } > db.users.find({'name': 'sosop'},{'phone': {$slice: [1,2]}}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "66666666666", "99999999999" ] }
内嵌文档
db.users.find({'addr.city': 'Chengdu'}) db.users.find({'addr': {$elemMatch: {'city': 'Chengdu', 'country': 'China'}}})
$where查询比常规长训慢
7.游标
> var cursor = db.users.find() > while(cursor.hasNext()) { ... u = cursor.next() ... print(u.name) ... } sosop > cursor.forEach(function(u) { ... print(u.age) ... } ... )
limit skip sort
> db.users.find() { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] } { "_id" : ObjectId("549577f83359eef64b07bb48"), "name" : "net-sosop", "age" : 27, "gender" : "male", "birthday" : ISODate("1996-01-01T00:00:00Z") } > db.users.find().limit(1) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] } > db.users.find().skip(1) { "_id" : ObjectId("549577f83359eef64b07bb48"), "name" : "net-sosop", "age" : 27, "gender" : "male", "birthday" : ISODate("1996-01-01T00:00:00Z") } > db.users.find().sort({'age': 1}) { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] } { "_id" : ObjectId("549577f83359eef64b07bb48"), "name" : "net-sosop", "age" : 27, "gender" : "male", "birthday" : ISODate("1996-01-01T00:00:00Z") } > db.users.find().sort({'age': -1}) { "_id" : ObjectId("549577f83359eef64b07bb48"), "name" : "net-sosop", "age" : 27, "gender" : "male", "birthday" : ISODate("1996-01-01T00:00:00Z") } { "_id" : ObjectId("549567573359eef64b07bb47"), "name" : "sosop", "age" : 26, "gender" : "male", "birthday" : ISODate("1996-03-11T00:00:00Z"), "email" : "sosopish@163.com", "phone" : [ "88888888888", "66666666666", "99999999999" ] }
避免使用skip过滤大量数据
8.高级查询
$maxscan : integer
$max : document
$min :document
$explain: boolean
$hint: documnet
$snapshot: boolean
9.索引
建立索引
db.users.ensureIndex({'name': 1})
注意多键创建索引时,索引的方向
索引缺点:每次cud时都会有额外的开销
索引名称:
db.users.ensureIndex({'name': 1}, {‘name’: 'name'm 'unique': true, 'dropDups': true})
explain和hint
db.users.find().explain()
10.地理空间索引
db.users.ensureIndex({'gps': '2d'}, {$min: 100,$max: 1000}) db.users.find({'gps': {$near: [200,80]}})
$within $box $center
11.聚合
count
db.users.count({})
group
db.users.group({key: {age: true}, initial: {"age": 0}, $reduce: function(doc, prev){ if (doc.age > prev.age) { prev.age = doc.age }}, condition: {age: {$gt: 26}}})
finalize完成器
函数作为键:$keyf: function(x) {}
MapReduce:
并行化到多个服务器的聚合方法
map reduce finalize keeptemp output query limit sort scope verbose
db.users.mapReduce(map, reduce, {out: 'tmp', sort: {age: 1}, limit: 1}
相关推荐
- **示例**: 输入 `help` 或者 `db.help()` 可以查看基本操作命令的帮助。 ##### 2. 切换/创建数据库 (Use/Create Database) - **命令格式**: `use yourDB` - **功能描述**: 如果指定的数据库不存在,则会自动创建...
在管理和操作MongoDB时,批处理脚本是一个高效的方法,特别是对于执行重复性的任务,如安装、启动、停止和配置服务。以下是根据提供的文件名解析出的MongoDB相关知识点: 1. **安装MongoDB服务**: - `install.bat...
在centos7下安装部署mongodb分片+副本集群常用命令整理,内容包含,安装、配置、启动、访问shell终端等命令
MongoDB常用操作命令大全 数据库常用命令 Collection聚集集合 用户相关 聚集集合查询
mongodb php distinct command --- mongoDb 常用命令
包含对数据库、集合、文档的常用操作。
MongoDB 常用命令 MongoDB 是一个流行的 NoSQL 数据库,提供了丰富的命令来管理和维护数据库。在本文中,我们将介绍一些 MongoDB 常用的命令,包括集合命令、数据库命令和其他命令。 集合命令 1. `db.collection....
MongoDB 使用C++编写,支持多种操作系统,并提供了丰富的查询语言,类似于面向对象的查询,允许执行类似关系数据库的单表查询操作,还支持建立索引来提升查询效率。此外,MongoDB 支持动态模式,即schema-free,这...
- `db.help()`:显示当前数据库可用的操作命令。 - `db.yourColl.help()`:针对特定集合提供帮助,例如`yourColl`集合。 - `db.youColl.find().help()`:关于`find`查询方法的帮助。 2. **切换/创建数据库** - ...
在日常使用中,MongoDB的这些命令对于数据的管理、查询和维护至关重要。通过灵活运用这些命令,开发者可以高效地处理和管理大规模的非结构化和半结构化数据,实现高并发和高性能的数据访问。由于其优秀的性能表现和...
### MongoDB常用操作命令详解 #### 一、启动与配置MongoDB服务 在开始介绍具体的数据库操作之前,我们先了解如何启动和配置MongoDB服务。以下是一些常用的命令: 1. **启动MongoDB服务(默认数据目录)** ```...
本手册涵盖了MongoDB的基础操作,旨在帮助初学者快速掌握其核心命令,以下是15条常用命令的详细说明: 1. **启动MongoDB服务**:在命令行中输入`mongod`启动MongoDB服务器,通常需要指定数据存储目录,如`mongod --...
以下是一些主要的MongoDB操作命令的详细解释: 1. **数据库相关操作**: - `use <database>`:切换当前工作数据库。例如,`use myDatabase` 将会切换到名为myDatabase的数据库。 - `db`:显示当前工作数据库。 -...
本文将深入探讨在MongoDB中常见的数据库操作命令,这些命令对于理解和操作MongoDB至关重要。 首先,让我们来看一下如何根据年龄对数据进行排序。在MongoDB中,可以使用`sort()`函数来对查询结果进行排序。例如,...
MongoDB 数据库常用命令大全 MongoDB 是 NoSQL 数据库系统中比较流行的数据库之一。它也是最接近关系型数据库的,一个数据库可以包含多个集合(Collection),类似于关系数据库中的表;而每个集合中可以存储一组由...
以下是一些关于MongoDB常用SQL操作的关键知识点: 1. **数据模型**:MongoDB基于JSON(JavaScript Object Notation)格式的文档存储数据,这使得它能够存储复杂的数据结构,如嵌套对象和数组。 2. **连接MongoDB**...
在MongoDB中,常用的操作语句可以分为数据定义语言(DDL)和数据操纵语言(DML)。 **DDL操作:** 1. 创建集合(表) - 语法:`db.createCollection("collectionName")` - 实例:创建一个名为`user2`的集合,...
以下是一些MongoDB的常用命令及其详细解释: 1. **创建集合(Collection)**: - `db.createCollection("mycoll", {capped:true,size:100000})`: 这个命令用于创建一个名为`mycoll`的集合,并设置为上限为100000...
本教程将详细介绍MongoDB在Linux环境下的安装步骤,并提供常用命令及实际案例,帮助您快速掌握MongoDB的操作。 首先,让我们来看如何在Linux系统上安装MongoDB。安装过程通常包括以下几个步骤: 1. **下载MongoDB*...
以下是一些MongoDB的常用命令及其详细解释: 1. **停止数据库**: - 使用`control-c`:在终端中按下`control-c`可以中断当前运行的MongoDB进程。 - `use admin`:切换到`admin`数据库,这是一个特殊的角色,可以...