在 MongoDB 的聚合框架中,$map 操作符是一种非常有用的转换数组的操作符。$map 操作符允许我们使用表达式来重新构造数组中的每个元素。下面我们将详细解释如何在 MongoDB 中使用 $map 操作符来转换数组。
$map 操作符的语法
$map 操作符用于将一个数组中的所有元素都转换成新的元素。$map 操作符的语法如下:
{ $map:{ input: <expression>, //输入数组 as: <string>, //定义变量名称,表示输入数组中的每个元素 in: <expression> //定义表达式,用于重构输入数组中每个元素 } }
其中,input 是输入数组,as 是定义输入数组中每个元素的变量名(类似于 JavaScript 中的 for...of 迭代语句),in 是一个表达式,用于重构输入数组中的每个元素。
使用 $map 操作符将数组中的每个元素转换成新元素
让我们看一个简单的示例,使用 $map 操作符将数组中的每个元素乘以 2 并返回:
-- -------------------- ---- ------- ----------------------- - --------- - ------- - ----- - ------ ---------- --- -------- --- - ---------- - ---------- - - - - - - - --
在这个示例中,我们使用 $project 操作符来将 prices 数组中的每个元素重新构造成一个新的元素(也就是将元素乘以 2)。$map 操作符用于构造一个新的数组(也就是重构元素),并将其赋给 prices 字段。
使用 $map 操作符将数组中的每个元素转换成多个新元素
在某些情况下,$map 操作符可以将一个数组中的每个元素重构为多个元素。让我们看一个示例,使用 $map 操作符将数组中的每个元素拆分为两个新元素:
-- -------------------- ---- ------- -------------------- - --------- - ----------- - ----- - ------ -------------- --- ------------ --- - ------- - -------------- - - - - - - - - --
在这个示例中,我们使用 $split 操作符将 characters 数组中的每个元素拆分为两个新元素(即 firstName 和 lastName)。$map 操作符将构造一个新的数组,其中每个元素都被拆分为两个新元素。
使用 $map 操作符将数组中的每个元素转换成多个新元素,并在 $project 中进行计算
在某些情况下,我们需要使用 $map 操作符将一个数组中的每个元素拆分为多个新的元素,并对这些新元素进行进一步的计算。让我们看一个示例,使用 $map 操作符将数组中的每个元素拆分为多个新元素,并在 $project 中进行计算:
-- -------------------- ---- ------- --------------------- - --------- - ------ - ----- - ------ --------- --- ------- --- - ----- -------------- ------ --------------- ------ - ---------- - --------------- ----------------- - - - - - - - --
在这个示例中,我们使用 $map 操作符将 items 数组中的每个元素拆分为多个新元素(即 name、price 和 total)。我们还使用 $multiply 操作符计算每个新元素中的 total 字段。最终,$map 操作符将构造一个新的数组,其中每个元素都包含 name、price 和 total 字段。
总结
$map 操作符是一个非常有用的 MongoDB 聚合语句,它可以帮助我们重新构造数组中的每个元素。通过 $map 操作符的帮助,我们可以将数组中的每个元素转换成新元素,并在聚合过程中进行处理。在使用 $map 操作符时,请确保您在构造输出数组之前使用它。这将确保我们可以将数组中的每个元素转换为完全不同的元素。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6484471e48841e9894365b0e