有没有办法在 MongoDB 聚合期间将字符串(格式:“1,5,20,22”)转换为整数数组( [1,5, 20, 22] )?
Posted
技术标签:
【中文标题】有没有办法在 MongoDB 聚合期间将字符串(格式:“1,5,20,22”)转换为整数数组( [1,5, 20, 22] )?【英文标题】:Is there a way to convert a string (format: "1,5,20,22") to an array of integers ( [1,5, 20, 22] ) during MongoDB aggregation? 【发布时间】:2020-02-19 14:26:17 【问题描述】:我一直在使用 MongoDB(和 Metabase)。 Metabase 搜索方式基于 Mongo 聚合管道。
对于不了解的人,元数据库允许我们创建图表,您可以为这些图表定义过滤器,并在您的上使用这些过滤器Mongo 查询。
无论如何,我可以拥有的唯一过滤器类型是:String、Number 和 Date。
但是,我有一个查询,我需要检查一个字段值是否是 $in 某个数组。
所以,我无法将数组作为过滤器发送。 单号不行。
我的想法是传递一个String(格式:"1,3,5,20"),然后将这个字符串转换成一个数字数组。 p>
有没有一种简单的方法可以在 Mongo Aggregation 上一次性完成此操作? 我试图不依赖多个管道阶段
我知道我可以使用split 来生成我的数组,但是从那里,我需要将我的新字符串数组上的所有值转换为整数值。
有什么想法吗?
【问题讨论】:
【参考方案1】:你应该可以使用$map,也许:
$project:
arrayField: $map:
input: $split: ["$stringField",","],
as: "elem",
in: $toInt: "$$elem"
Playground
【讨论】:
以上是关于有没有办法在 MongoDB 聚合期间将字符串(格式:“1,5,20,22”)转换为整数数组( [1,5, 20, 22] )?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 MongoDB 聚合期间为每个文档创建唯一 ID?