MongoDB-聚合操作额外配置与聚合操作表达式

2023-09-26 22:45:58 浏览数 (1)

聚合操作额外配置

  • 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
代码语言:json复制
db.person.aggregate([
    {
        $project: {
            _id: 0,
            myName: '$name.firstName',
            myName2: '$name'
        }
    }
])

系统变量表达式

  • $$CURRENT: 表示当前操作的文档

示例

  • $$CURRENT.name -> 等价于 $name
代码语言:json复制
db.person.aggregate([
    {
        $project: {
            _id: 0,
            myName: '$$CURRENT.name'
        }
    }
])

常量表达式

  • $literal: <value>: 表示常量 <value>

示例

  • $literal: '$name': 表示常量字符串 $name
代码语言:json复制
db.person.aggregate([
    {
        $project: {
            _id: 0,
            myName: {$literal: 'BNTang'}
        }
    }
])

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

0 人点赞