聚合操作额外配置
- db.<collection>.aggregate(<pipeline>,
<options>
)
格式:
代码语言:json复制db.<collection>.aggregate(<pipeline>, {allowDiskUse: <boolean>})
allowDiskUse
默认取值是false
, 默认情况下管道阶段占用的内存不能超过100M
,如果超出100M
就会报错, 如果需要处理的数据比较多, 聚合操作使用的内存可能超过 100M, 那么我们可以将allowDiskUse
设置为true
如果 allowDiskUse 设置为 true, 那么一旦超出
100M 就会将操作的数据写入到临时文件中, 然后再继续操作
字段路径表达式
$<filed>
: 使用$
来指示字段路径$<filed>.<sub-field>
: 使用$
和.
来指示内嵌文档字段路径
示例
添加测试数据:
代码语言:json复制db.person.insert([
{name:{firstName:'Jonathan', lastName:'Lee'}, age:18},
{name:{firstName:'Amelie', lastName:'Tang'}, age:19}
])
- $name
- $name.firstName
db.person.aggregate([
{
$project: {
_id: 0,
myName: '$name.firstName',
myName2: '$name'
}
}
])
系统变量表达式
$$CURRENT
: 表示当前操作的文档
示例
- $$CURRENT.name -> 等价于 $name
db.person.aggregate([
{
$project: {
_id: 0,
myName: '$$CURRENT.name'
}
}
])
常量表达式
$literal: <value>
: 表示常量<value>
示例
$literal: '$name'
: 表示常量字符串$name
db.person.aggregate([
{
$project: {
_id: 0,
myName: {$literal: 'BNTang'}
}
}
])
我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表