javascript - 如何使用 Mongoose 过滤器显示嵌套数组中的数据?
问题描述
我不知道如何写标题,但我的问题是我在 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
}
]
]
可卡克
解决方案
使用$elemMatch
. 来自 mongo 文档:
$elemMatch 运算符匹配包含数组字段的文档,其中至少一个元素匹配所有指定的查询条件。
{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }
如果在 $elemMatch 表达式中只指定一个条件,则不需要使用 $elemMatch。
在你的情况下,这可能是这样的:
db.employee.find(
{ data: { $elemMatch: { tahun: "2022" } } }
)
请注意,此处的员工是您的型号名称。
推荐阅读
- react-native-ios - clang:错误:没有输入文件,React Native 0.59.9 YGFloatOptional.cpp 文件未找到,react native ios 错误
- javascript - 构建动态剑道网格时模板无效
- css - CSS 特异性测试
- python - 在python运行时将数据从GUI传递给线程
- c# - Socket.BeginReceive:如果数据未通过则超时?
- unity3d - 防止变量在另一个场景负载上发生变化
- api - 无法从本地 api React-Native 获取数据
- java - Spring容器在引入切面后不注入依赖
- sockets - 大/小端转换在哪一层完成?
- sql - 2个表之间的查询