【发布时间】:2019-09-29 13:24:41
【问题描述】:
我有以下型号:
{
"_id" : ObjectId("...some id"),
"lessons" : [
{
"date" : ISODate("2019-09-23T16:00:00.000+02:00"),
"subject" : [
"Javascript",
"Order"
],
"price" : 60
},
{
"date" : ISODate("2019-09-24T16:00:00.000+02:00"),
"subject" : [
"Javascript"
],
"price" : 120
}
]
}
我想根据嵌套“主题”数组中的值过滤“课程”数组。 过滤器我的意思是如果嵌套数组“主题”中的值不等于值“顺序”,则从数组“课程”中删除整个对象。
预期输出(移除对象,因为嵌套数组包含“Order”值):
{
"_id" : ObjectId("...some id"),
"lessons" : [
{
"date" : ISODate("2019-09-24T16:00:00.000+02:00"),
"subject" : [
"Javascript"
],
"price" : 120
}
]
}
我尝试过使用 $filter 管道,但它会覆盖整个数组“课程”。
db.students.aggregate([
{
$project: {
"lessons": {
$filter: {
input: "$lessons.subject",
as: "subject",
cond: {
$ne: [
"$$subject",
"Order"
]
}
}
}
}
},
]);
【问题讨论】:
标签: mongodb nosql mongodb-query aggregation-framework