聚合操作额外配置
- 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腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表


