mongo-aggregation:在 $project 上应用正则表达式分组、字符串处理

2023-12-25

我想在执行 $project 时应用一些简单的字符串操作,是否可以在 $project 上应用类似以下函数的内容? :

var themeIdFromZipUrl = function(zipUrl){
    return zipUrl.match(/.*\/(T\d+)\/.*/)[1]
};

我正在使用以下查询:

db.clientRequest.aggregate(
{
$match: {
  "l": {$regex: ".*zip"},
  "t": { "$gte": new Date('1/SEP/2013'),
                    "$lte": new Date('7/OCT/2013')
                    }
  }
},
{
  $project: {"theme_url" : "$l", "_id": 0, "time": "$t"}
},
{
  $group: {   _id: {
                      theme_url: "$theme_url",
                      day: {
                              "day": {$dayOfMonth : "$time"},
                              "month": {$month: "$time"},
                              "year": {$year: "$time"}
                            },
              },
              count: {$sum:1}
  }
}

)

这将返回以下内容:

        {
        "_id" : {
            "theme_url" : "content/theme/T70/zip",
            "day" : {
                "day" : 13,
                "month" : 9,
                "year" : 2013
            }
        },
        "count" : 2
    }

我可以将上面的功能应用到theme_url字段并将其转换为theme_id?我稍微了解了一下 Map-Reduce,但我不确定对于这样一个简单的情况来说它是否有点太复杂了。

Thanks,

Amit.


目前无法使用聚合框架来做到这一点。

您可以使用 MapReduce 来完成此操作,但这可能会减慢整个过程(如果数据量很大)。

如果这是聚合的最后一步,您也可以在聚合完成后在客户端执行此操作。例如在蒙戈外壳中:

var aggregationResults = col.aggregate([ /* aggregation pipeline here */]);
aggregationResults.results.forEach(function(x) { 
  x._id.theme_id = themeIdFromUrl(x._id.themeUrl);
});

当然,如果您使用另一种语言的驱动程序,则必须使用您使用的任何语言来执行此操作。

一般来说,如果您的数据包含 theme_url 并且 theme_id 编码在 URL 中,则将其存储在自己的字段中可能是有意义的。 Mongo 并不是一个很好的文本操作工具。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongo-aggregation:在 $project 上应用正则表达式分组、字符串处理 的相关文章

随机推荐

  • Firebase DatabaseException:无法将 java.lang.Long 类型的值转换为 String

    com google firebase database DatabaseException 转换失败 java lang Long 类型的值转换为 String 是我在按照文档尝试将数据检索到对象以供使用时不断收到的错误 这是我的对象模型
  • 没有匹配的函数用于调用构造函数(c ++)[重复]

    这个问题在这里已经有答案了 EDIT 好吧 我又花了几个小时阅读了一些内容 我想我终于更好地理解了 C OOP 至少是基础知识 我决定一次重写整个程序和代码并进行更多测试 我想这次我缩小了错误的范围 命名风暴 h include
  • Plotly:躲避散点图分类轴上的重叠点

    我正在尝试使用绘图来比较回归模型的系数 并使用置信区间的误差线 我使用以下代码来绘制它 使用变量作为分类y散点图中的轴 问题是这些点是重叠的 我想避开它们 就像您设置时在条形图中发生的那样barmode group 如果我有一个数字轴 我可
  • Rails - 有 2 个字段的查找依据?

    我在控制器中有以下内容 def update permission Permission find by user id params user id 但我希望它也能通过另一个参数找到 project id 我怎样才能在 Rails 中做这
  • 如何让我的维吉尼亚密码忽略原始消息中的空格

    我试图制作一个维吉尼亚密码 但我似乎找不到一种方法来实现在输入消息时忽略输入的空格 然后打印最后的功能 例如 我输入起始消息 python 计算 然后我输入密钥为 stack 如果程序忽略原始消息中的空格 我希望得到 isukzg wppa
  • 对象文字属性值简写与“this”不兼容

    在 JavaScript 中可以执行以下操作 var a this this 但使用 ES6 属性简写时 我得到 SyntaxError var b this SyntaxError this is a reserved identifie
  • 关于 MvcContrib TestHelpers 的新手问题

    我刚刚开始使用 MvcContrib 中的 TestHelpers 我想尝试在我的控制器上测试一个操作方法 该方法本身测试 IsAjaxRequest 是否为 true 我使用了 TestHelper 示例中显示的相同代码来设置 TestC
  • snprintf:是否有任何 C 标准提案/计划来更改此函数的描述?

    C语言标准是否有任何提案 或计划 来更改 最后一句 描述snprintf函数使得描述的歧义这是我的答案 https stackoverflow com questions 7706936 is snprintf always null te
  • Google Play 游戏服务错误代码 400

    有一个使用玩游戏服务的应用程序 但由于某种原因它停止工作 看起来有时我可以成功登录 但通常 不能 如果我检查 API 流量 大约有 10 的人得到响应代码 200 其他人得到响应代码 404 得到404的方法 游戏 应用程序 玩过 游戏 事
  • React Native AsyncStorage 返回承诺而不是值

    我知道这是 RN 中一个非常常见的问题 我仍在尝试了解从属性文件加载数据时返回 Promise 的可能优势 而不是仅仅返回值 这使得链接请求非常麻烦 但无论如何 这是我现在拥有的 它是 AsyncStorage RN 实现的包装器 mult
  • Android 应用程序显示状态已发布但无法安装,表示预注册而不是安装

    从文档中可以看出 如果应用程序状态已发布 则应该可以下载 但对我来说 我没有安装选项 而是预先注册 我应该等多久才能显示安装 谢谢 The 预注册帮助页面位于此处 https support google com googleplay an
  • 如何去掉 ASP.NET MVC 路由中的问号?

    我定义了以下路线 theme subtheme contenttype contentdetail Print 当我使用 Url Action PrintLayout Page new contentUrlTitle Model Conte
  • 如何修复 UTF-8 解码错误的字符串?

    我正在使用来自 RESTful API 的数据 它返回字符串和整数值 但是 它似乎返回了一些错误编码 解码的字符串值 可能 预期字符串 crian a 收到的字符串 crian a 这是我的代码 url https analytics us
  • python循环并为列的每个值创建新的数据框

    我想为车站的每个唯一值创建一个新的数据框 我尝试了下面的方法 只给出了 dataframe tai new i 中更新的最后一个站数据 tai station unique has 500 values for i in tai stati
  • 角度2更改位置以固定在滚动上

    我有一个位置固定的左侧边栏 我想要实现的是 当我滚动大约 50 或 60 像素时 左侧边栏的位置应更改为固定 左侧栏 component ts import Component from angular core Component mod
  • 中继现代嵌套分页

    我有一个根查询songs 这是在分页容器中 然后我在歌曲上有一个嵌套属性 称为comments我也想分页 因为我不想一次为每首歌加载 10k 条评论 歌曲容器 js fragment songsContainer on Query song
  • 在 WPF XAML 中,如何连接 2 个常量以便可以使用预定义路径?

    我想用 c 常量替换源路径的路径部分 以便于路径管理 例如我有
  • 将 PDF 文件中的数据读取到 R 中

    这还可能吗 我有一堆旧报告需要导入到数据库中 不过 它们都是 pdf 格式 有没有R可以阅读pdf的软件包吗 或者我应该将其留给命令行工具 这些报告是用 Excel 制作的 然后以 pdf 形式生成 因此它们具有规则的结构 但有许多空白的
  • QTableWidget Item获取Widget类型并访问它

    我正在尝试对 QtableWidget 中的行进行求和 但这样做时出现分段错误 不确定是什么原因造成的 但我认为这与我将单元格小部件项目设置为旋转框而我没有这样做有关正确访问它们 当我在 cellChanged 事件中设置它时 当旋转框发生
  • mongo-aggregation:在 $project 上应用正则表达式分组、字符串处理

    我想在执行 project 时应用一些简单的字符串操作 是否可以在 project 上应用类似以下函数的内容 var themeIdFromZipUrl function zipUrl return zipUrl match T d 1 我