有没有办法在 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?
我一直在使用 MongoDB(和 Metabase)。 Metabase 搜索方式基于 Mongo 聚合管道。
对于不知道的人,Metabase 允许我们创建图表,您可以为这些图表定义过滤器,并且在您的 Mongo 查询中使用这些过滤器。
无论如何,我唯一可以拥有的过滤器类型是:String、Number 和 Date.
但是,我有一个查询,我需要检查一个字段值是否是 $in 某个数组。
因此,我无法将数组作为过滤器发送。
单号不行。
我的想法是传递一个String(格式:"1,3,5,20"),然后转换这个字符串在数字数组中。
有没有一种简单的方法可以在 Mongo 上的单个 "shot" 聚合中执行此操作?
我试图不依赖多个管道阶段
我知道我可以使用 split 来生成我的数组,但是从那里,我需要将我的新字符串数组中的所有值转换为整数值。
有什么想法吗?
您应该可以使用 $map,也许:
{$project:{
arrayField: {$map: {
input: {$split: ["$stringField",","]},
as: "elem",
in: {$toInt: "$$elem"}
}}
}}
我一直在使用 MongoDB(和 Metabase)。 Metabase 搜索方式基于 Mongo 聚合管道。
对于不知道的人,Metabase 允许我们创建图表,您可以为这些图表定义过滤器,并且在您的 Mongo 查询中使用这些过滤器。
无论如何,我唯一可以拥有的过滤器类型是:String、Number 和 Date.
但是,我有一个查询,我需要检查一个字段值是否是 $in 某个数组。
因此,我无法将数组作为过滤器发送。 单号不行。
我的想法是传递一个String(格式:"1,3,5,20"),然后转换这个字符串在数字数组中。
有没有一种简单的方法可以在 Mongo 上的单个 "shot" 聚合中执行此操作? 我试图不依赖多个管道阶段
我知道我可以使用 split 来生成我的数组,但是从那里,我需要将我的新字符串数组中的所有值转换为整数值。
有什么想法吗?
您应该可以使用 $map,也许:
{$project:{
arrayField: {$map: {
input: {$split: ["$stringField",","]},
as: "elem",
in: {$toInt: "$$elem"}
}}
}}