MongoDB聚合:$documents

$documents阶段可以根据输入值返回字面意义的文档。

语法

{
    $documents: <表达式> }

$documents接受可解析为对象数组的任何有效表达式,包括:

  • 系统变量,如 $$NOW $$SEARCH_META

  • $let 表达式

  • $lookup 表达式作用域中的变量

没有指向当前文档的表达式(如 $myField$$ROOT)将导致错误。

举例

测试管道阶段

下面例子为管道阶段创建测试和调试数据,无需创建测试集合。

db.aggregate(
   [
      {
    $documents: [ {
    x: 10 }, {
    x: 2 }, {
    x: 5 } ] },
      {
    $bucketAuto: {
    groupBy: "$x", buckets: 4 } }
   ]
)

聚合表达式不指定集合。它使用$documents阶段中的输入数据作为$bucketAuto阶段的输入。

[
  {
    _id: {
    min: 2, max: 5 }, count: 1 },
  {
    _id: {
    min: 5, max: 10 }, count: 1 },
  {
    _id: {
    min: 10, max: 10 }, count: 1 }
]

在 $lookup 阶段使用 $documents 阶段

使用$documents修改$lookup的输出。

创建locations集合:

db.locations.insertMany(
   [
      {
    zip: 94301, name: "Palo Alto" },
      {
    zip: 10019, name: "New York" }
   ]
 )

使用$documents作为数据源来转换文件。

db.locations.aggregate(
   [
      {
    $match: {
   } },
      {
    $lookup:
         {
   
            localField: "zip",
            foreignField: "zip_id",
            as: "city_state",
            pipeline:
              [
                 {
    $documents:
                    [
                       {
    zip_id: 94301, name: "Palo Alto, CA" },
                       {
    zip_id: 10019, name: "New York, NY" }
                    ]
                 }
              ]
         }
      }
   ]
 )

输出将locations集合中的数据与$documents管道阶段中的值相关联。

[
   {
   
      _id: ObjectId("618949d60f7bfd5f5689490d"),
      zip: 94301,
      name: 'Palo Alto',
      city_state: [ {
    zip_id: 94301, name: 'Palo Alto, CA' } ]
   },
   {
   
      _id: ObjectId("618949d60f7bfd5f5689490e"),
      zip: 10019,
      name: 'New York',
      city_state: [ {
    zip_id: 10019, name: 'New York, NY' } ]
   }
]
  • zip 字段对应 zip_id 字段

  • as 参数会创建一个新的输出字段

相关推荐

  1. MongoDB聚合:$documents

    2024-01-13 06:28:03       39 阅读
  2. MongoDB聚合管道:$match

    2024-01-13 06:28:03       36 阅读
  3. MongoDB聚合:$out

    2024-01-13 06:28:03       42 阅读
  4. MongoDB聚合:$replaceRoot

    2024-01-13 06:28:03       37 阅读
  5. MongoDB聚合:$addField

    2024-01-13 06:28:03       40 阅读
  6. MongoDB聚合:$facet

    2024-01-13 06:28:03       38 阅读
  7. MongoDB聚合:$bucket

    2024-01-13 06:28:03       35 阅读
  8. MongoDB聚合:$bucketAuto

    2024-01-13 06:28:03       37 阅读
  9. MongoDB聚合:$changeStreamSplitLargeEvent

    2024-01-13 06:28:03       33 阅读
  10. MongoDB聚合:$indexStats

    2024-01-13 06:28:03       34 阅读

最近更新

  1. 微软edge浏览器全解析

    2024-01-13 06:28:03       0 阅读
  2. react根据后端返回数据动态添加路由

    2024-01-13 06:28:03       0 阅读
  3. RedHat运维-Ansible自动化运维基础22-rhel-system-roles

    2024-01-13 06:28:03       0 阅读
  4. 深入浅出:Scikit-Learn基础教程

    2024-01-13 06:28:03       0 阅读
  5. python class

    2024-01-13 06:28:03       0 阅读
  6. 10.pwn ROP(栈溢出攻击的核心)

    2024-01-13 06:28:03       0 阅读
  7. sklearn基础教程

    2024-01-13 06:28:03       0 阅读
  8. 跨境支付新篇章:引领电商潮流

    2024-01-13 06:28:03       0 阅读

热门阅读

  1. TIDB的忘了root用户密码和数据库密码解决办法

    2024-01-13 06:28:03       23 阅读
  2. 编程笔记 html5&css&js 036 CSS概述

    2024-01-13 06:28:03       30 阅读
  3. 【Elasticsearch】Elasticsearch集群搭建详细手册

    2024-01-13 06:28:03       40 阅读
  4. 给el-select的change事件传自己想要的参数

    2024-01-13 06:28:03       31 阅读
  5. Ubuntu按转发HDF5

    2024-01-13 06:28:03       36 阅读
  6. python类装饰器编写单体类

    2024-01-13 06:28:03       36 阅读
  7. 第一天业务题

    2024-01-13 06:28:03       37 阅读
  8. pytest框架

    2024-01-13 06:28:03       31 阅读
  9. 《设计模式的艺术》笔记 - 工厂方法模式

    2024-01-13 06:28:03       33 阅读
  10. Python pytest入门教程

    2024-01-13 06:28:03       37 阅读
  11. 怎么节约cdn流量- 速盾网络(Sudun)

    2024-01-13 06:28:03       38 阅读