【发布时间】:2020-10-22 13:31:44
【问题描述】:
我是 MongoDB 新手。
这是我的“主病人”系列,里面有很多文件。每个文档都包含“访问”数组,每个访问数组都包含多个对象。我只想要那些对我的输入感到满意的对象。 我只期望低于预期的输出。如果设施与我的输入匹配并且访问日期范围与我提供的输入匹配,则查询应仅返回该对象,如下所示。
_id:5ef59134a3d8d92e580510fe
flag:0
name:"emicon_test"
dob:2020-06-25T00:00:00.000+00:00
visits:[
{
visit:2020-06-09T10:36:10.635+00:00,
facility:"Atria Lady Lake"
},
{
visit:2020-05-09T10:36:10.635+00:00,
facility:"demo"
}]
_id:5ee3213040f8830e04ff74a8
flag:0
name:"xyz"
dob:1995-06-25T00:00:00.000+00:00
visits:[
{
visit:2020-05-01T10:36:10.635+00:00,
facility:"pqr"
},
{
visit:2020-05-15T10:36:10.635+00:00,
facility:"demo"
},
{
visit:2020-05-09T10:36:10.635+00:00,
facility:"efg"
}]
我的查询输入参数是 facility='demo',访问日期范围是从 '1st May 2020' 到 '10th May 2020'
预期输出:
_id:5ef59134a3d8d92e580510fe
flag:0
name:"emicon_test"
dob:2020-06-25T00:00:00.000+00:00
visits:[
{
visit:2020-05-09T10:36:10.635+00:00,
facility:"demo"
}]
提前致谢。
【问题讨论】:
-
你试过$elemMatch
-
@Joe 是的,但它返回整个数组,而不是我提到的输出的特定对象。
-
您在 elemMatch 中使用了哪些过滤器?
-
Joe 我用过 $gte 和 $lte 过滤器
-
您可以将该查询编辑到问题中
标签: arrays mongodb mongoose mongodb-query aggregation-framework