我需要从一组记录中提取键-值对形式的数据,并将它们合并到mongoDB中的父记录中

马特·加奈特

下面是我的sails.js应用程序中支持自定义选择列表字段的结构(在此示例中)。总体思路是,我们支持在应用程序内的任何模型上收集自定义选择列表值,并且客户可以完全控制自定义字段的配置。

我使用这种关系模型,因为在更新每个自定义选择列表值时,使用简单的json字段缺乏健壮性。如果我允许客户将“内部”更改为“外部”,则需要使用新值更新针对该自定义选择列表记录的具有“内部”值的所有记录。

这样-当我更新CustomPicklistValue通过ID引用该记录任何地方的“值”字段时,它将使用新值。

在此处输入图片说明

现在,当我需要将此模型集成到我现有的报表引擎中时,问题就来了。

rawCollection
        .aggregate(
            [
                {
                    $match: {
                        createdAt: {
                            $gte: rangeEndDate,
                            $lte: rangeStartDate
                        },
                        ...$match
                    }
                },
                {
                    $project: {
                        ...$project,
                        total: $projectAggregation
                    }
                },
                {
                    $group: {
                        _id: {
                            ...$groupKey
                        },
                        total: {
                            [`$${aggrAttrFunc}`]: "$total"
                        }
                    }
                }
            ],
            {
                cursor: {
                    batchSize: 100
                }
            }
        )

Here is the main part of a method for retrieving and aggregating any models stored in my mongodb instance. A user can specify a whole range of things including but not limited to the model, field specific date ranges and filters such as "where certificate status equals expired" etc.

So I'm now presented with this data structure:

{
    id: '5e5fb732a9422a001146509f',
    customPicklistValues: [
        {
            id: '5e4e904f16ab94bff1a324a0',
            value: 'Internal',
            fieldName: 'Business Group',
            customPicklist: '109c7a1a9d00b664f2ee7827'
        },
        {
            id: '5e4e904f16ab94bff1a324a4',
            value: 'Slack',
            fieldName: 'Application',
            customPicklist: '109c5a1a9d00b664f2ee7827'
        }
    ],
}

And for the life of me can't work out if there's any way I can essentially pull out fieldName and value for each of the populated records as key-value pairs and add each to the parent record before running my match clause...

I think I need to use lookup to initially populate the customPicklistValues and then merge them somehow?

Any help appreciated.

EDIT:

@whoami建议我使用$ addFields。在$ addFields填充链接记录之前,我需要做很多工作(由于Sails.js的Waterline如何处理将相关集合中的Mongo ObjectID保存为字符串),您可以在指南针中看到我的步骤:

在此处输入图片说明

最后一步是编辑它或在其中添加一个阶段,以实际上能够像Business Group: "Finance"本示例中那样支持key:value对

谁-假面真灵魂

您可以在阶段结束后尝试以下阶段$lookup

db.collection.aggregate([
    {
        $addFields: {
            customPicklistValues:
            {
                $arrayToObject: {
                    $map: {
                        input: '$customPicklistValues',
                        in: { k: '$$this.fieldName', v: '$$this.value' }
                    }
                }
            }
        }
    },
    { $replaceRoot: { newRoot: { $mergeObjects: ['$customPicklistValues', '$$ROOT'] } } },
    { $project: { customPicklistValues: 0 } }
])

测试: MongoDB-操场

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在数据框中查找包含一对公共值的行,并将它们合并到第三列

来自分类Dev

Xquery如何从一组xml记录内的一组xml节点中提取专有术语?

来自分类Dev

Xquery如何从一组xml记录内的一组xml节点中提取专有术语?

来自分类Dev

BigQuery - 从一组 Json 文件中提取数据

来自分类Dev

我需要从一个函数返回多个值并将它们打印在我的 Wordpress 模板中

来自分类Dev

将多个csv文件导入熊猫并将它们合并到一个DataFrame中

来自分类Dev

读取多个ENVI文件并将它们合并到一个csv中

来自分类Dev

SQL从一组数据中获取最新记录

来自分类Dev

SQL从一组数据中获取最新记录

来自分类Dev

java - 如何比较两个txt文件中的元素并将它们合并到一个文件中?

来自分类Dev

如果记录包含一组特定的字符串,如何从文件中提取记录?

来自分类Dev

从数据库中删除记录并将它们保存到文件 - PHP

来自分类Dev

需要从epub或文本文件中批量提取一组4位数字

来自分类Dev

python:提取不同列表的项目并将它们放在一组中

来自分类Dev

如何从数据库中提取记录,调整它们并将它们插入不同的列?

来自分类Dev

合并数据库中不同行中的项目,并将它们显示在listview的一行中

来自分类Dev

我需要从汤项目中提取数据

来自分类Dev

从数据框中提取不同的值,并将它们插入具有相同列名称的新数据框中

来自分类Dev

如何批量重命名多个文件夹中的多个文件并将它们合并到一个大文件夹中?

来自分类Dev

如何制作一组形状并将它们放入我的场景中?

来自分类Dev

一组在多个数据帧上的函数,并将输出合并到R中

来自分类Dev

SQL / Rails从一组记录中返回唯一值的计数

来自分类Dev

如何从一组记录中获取第一条记录 MS sql

来自分类Dev

innerHTML 示例运行良好,直到我将它们合并到其他 Javascript 中

来自分类Dev

如何将它们合并到一个表中?

来自分类Dev

过滤重复的记录并将它们加入其他记录中-ORACLE

来自分类Dev

从python中的复合元素列表中提取一组

来自分类Dev

从python中的一组链接中提取数字

来自分类Dev

如何查找记录并将它们附加到另一个文件中

Related 相关文章

  1. 1

    在数据框中查找包含一对公共值的行,并将它们合并到第三列

  2. 2

    Xquery如何从一组xml记录内的一组xml节点中提取专有术语?

  3. 3

    Xquery如何从一组xml记录内的一组xml节点中提取专有术语?

  4. 4

    BigQuery - 从一组 Json 文件中提取数据

  5. 5

    我需要从一个函数返回多个值并将它们打印在我的 Wordpress 模板中

  6. 6

    将多个csv文件导入熊猫并将它们合并到一个DataFrame中

  7. 7

    读取多个ENVI文件并将它们合并到一个csv中

  8. 8

    SQL从一组数据中获取最新记录

  9. 9

    SQL从一组数据中获取最新记录

  10. 10

    java - 如何比较两个txt文件中的元素并将它们合并到一个文件中?

  11. 11

    如果记录包含一组特定的字符串,如何从文件中提取记录?

  12. 12

    从数据库中删除记录并将它们保存到文件 - PHP

  13. 13

    需要从epub或文本文件中批量提取一组4位数字

  14. 14

    python:提取不同列表的项目并将它们放在一组中

  15. 15

    如何从数据库中提取记录,调整它们并将它们插入不同的列?

  16. 16

    合并数据库中不同行中的项目,并将它们显示在listview的一行中

  17. 17

    我需要从汤项目中提取数据

  18. 18

    从数据框中提取不同的值,并将它们插入具有相同列名称的新数据框中

  19. 19

    如何批量重命名多个文件夹中的多个文件并将它们合并到一个大文件夹中?

  20. 20

    如何制作一组形状并将它们放入我的场景中?

  21. 21

    一组在多个数据帧上的函数,并将输出合并到R中

  22. 22

    SQL / Rails从一组记录中返回唯一值的计数

  23. 23

    如何从一组记录中获取第一条记录 MS sql

  24. 24

    innerHTML 示例运行良好,直到我将它们合并到其他 Javascript 中

  25. 25

    如何将它们合并到一个表中?

  26. 26

    过滤重复的记录并将它们加入其他记录中-ORACLE

  27. 27

    从python中的复合元素列表中提取一组

  28. 28

    从python中的一组链接中提取数字

  29. 29

    如何查找记录并将它们附加到另一个文件中

热门标签

归档