我不知道如何写标题,但是我的问题是我在MongoDB中有一个嵌套的数组数据,其结构如下:
[
{
employee: one,
data: [
{
tahun: 2020
},
{
tahun: 2022
}
],
somedata: ...,
..
},
{
employee: two,
data: [
{
tahun: 2019
},
{
tahun: 2022
}
]
},
somedata: ...,
..
]
我想显示所有员工,但只显示数据tahun =2022。所以应该像这样:
[
{
employee: one,
data: [
{
tahun: 2022
}
]
},
somedata: ...,
..
{
employee: two,
data: [
{
tahun: 2022
}
]
},
somedata: ...,
..
]
我不知道如何使用猫鼬功能.find()
对其进行过滤。到目前为止,我只能返回数据数组(已过滤),但不能像这样返回整个employees
数据:
[
data: [
{
tahun: 2022
}
],
data: [
{
tahun: 2022
}
]
]
kocak
答案 0 :(得分:1)
使用$elemMatch
。来自mongo文档:
$ elemMatch运算符匹配包含数组字段的文档 具有至少一个与所有指定查询匹配的元素 条件。
{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }
如果您在$ elemMatch表达式中仅指定一个条件, 您不需要使用$ elemMatch。
对于您来说,这可能是这样的:
db.employee.find(
{ data: { $elemMatch: { tahun: "2022" } } }
)
请注意,这里的员工是您的型号名称。