Mongodb 将 $push 与 $cond 和 $each 聚合

作者:编程家 分类: mongodb 时间:2025-08-17

Mongodb中的$push与$cond和$each聚合操作

在Mongodb中,$push操作符用于向数组字段中添加元素。同时,我们还可以使用$cond操作符和$each操作符来进一步控制和扩展这个过程。本文将介绍如何使用这些操作符来实现聚合操作,并提供相应的案例代码。

$push操作符

$push操作符用于向数组字段中添加新的元素。它的语法如下:

{ $push: { : } }

其中,表示目标数组字段,表示要添加的元素。

例如,假设我们有一个名为students的集合,其中的文档包含一个名为grades的数组字段,我们可以使用$push操作符向该字段中添加新的成绩:

javascript

db.students.update(

{ _id: 1 },

{ $push: { grades: 95 } }

)

$cond操作符

$cond操作符用于根据条件来选择不同的值。它的语法如下:

{ $cond: { if: , then: , else: } }

其中,表示条件表达式,表示条件为真时的返回值,表示条件为假时的返回值。

例如,假设我们有一个名为students的集合,其中的文档包含一个名为grades的数组字段,我们可以使用$cond操作符根据成绩是否大于等于90来选择不同的评级:

javascript

db.students.aggregate([

{

$project: {

grades: {

$map: {

input: "$grades",

as: "grade",

in: {

$cond: {

if: { $gte: [ "$$grade", 90 ] },

then: "A",

else: "B"

}

}

}

}

}

}

])

$each操作符

$each操作符用于向数组字段中添加多个元素。它的语法如下:

{ $each: [ , , ... ] }

其中,等表示要添加的元素。

例如,假设我们有一个名为students的集合,其中的文档包含一个名为grades的数组字段,我们可以使用$each操作符向该字段中添加多个成绩:

javascript

db.students.update(

{ _id: 1 },

{ $push: { grades: { $each: [ 80, 85, 90 ] } } }

)

示例代码

下面是一个综合运用$push、$cond和$each操作符的示例代码:

javascript

db.students.aggregate([

{

$project: {

grades: {

$map: {

input: "$grades",

as: "grade",

in: {

$cond: {

if: { $gte: [ "$$grade", 90 ] },

then: "A",

else: {

$cond: {

if: { $gte: [ "$$grade", 80 ] },

then: "B",

else: "C"

}

}

}

}

}

}

}

}

])

以上代码将根据成绩的不同范围,返回相应的评级,即大于等于90为A,大于等于80为B,其余为C。

本文介绍了如何使用Mongodb中的$push、$cond和$each操作符来实现聚合操作。$push操作符用于向数组字段中添加元素,$cond操作符用于根据条件选择不同的值,$each操作符用于向数组字段中添加多个元素。通过灵活运用这些操作符,我们可以实现更加复杂的数据处理需求。