mongodb

[TOC]

CRUD

WX20200428-233814@2x

WX20200428-234023@2x

WX20200428-234037@2x

WX20200428-234129@2x

可以指定不需要返回的字段,和需要返回的字段

1
db.workmate.find({},{_id:0,re:1});

需要注意的是,不能混用,要么 1 要么 0,除了_id 主键任意之外

WX20200428-234621@2x

删除的时候注意要指定

WX20200429-225759@2x

WX20200429-230739@2x

WX20200429-230856@2x

聚合

WX20200429-234745@2x

1
db.<COLLECTION>.aggregate(pipeline, options)

MQL 特有步骤

$bucket

WX20200430-212232@2x

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
db.workmate.insertMany([
{ price: 1, name: "a" },
{ price: 7, name: "a1" },
{ price: 12, name: "a2" },
{ price: 14, name: "a3" },
{ price: 21, name: "a4" },
{ price: 31, name: "a5" }
]);

db.workmate.aggregate([
{
$bucket: {
groupBy: "$price", // 用于分组的表达式
boundaries: [0, 10, 20, 30, 40], // 基于groupBy表达式的值的数组,这些表达式指定每个存储桶的边界。
default: "Other",
output: { count: { $sum: 1 } }// 输出
}
}
]);

$facet

WX20200501-230147@2x

复制集

WX20200503-085908@2x

WX20200503-090008@2x

WX20200503-090037@2x

事务

使用事务的原则:能不 用尽量不用。因为 事务 = 锁 有 额外开销和性能影响。

WX20200503-230933@2x

  • 事务操作是有隔离性的。假设在事务内做更新操作,在未提交前是访问不到新的数据。

  • 两个事务操作同一条数据是会报错的

WX20200503-232542@2x

索引机制

WX20200503-233314@2x

WX20200503-233338@2x

WX20200503-233418@2x

WX20200503-233736@2x

WX20200503-234010@2x

WX20200503-234444@2x

基本语法

1
db.collection.createIndex(keys, options)