【问题标题】:How to fetch only condition satisfied/match object from an array in mongodb?如何从 mongodb 中的数组中仅获取条件满足/匹配对象?
【发布时间】: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


【解决方案1】:

我得到了答案。

MasterPatientModel.aggregate([
                {
                    '$unwind':"$visits"
                },
                {"$match": {"visits.visit": {"$gte": new Date(req.body.facilitySummaryFromdate), "$lte": new Date(req.body.facilitySummaryTodate)
                                            } ,  "visits.facility":  req.body.facilitySummary
                           }
                }
    ])

【讨论】:

    【解决方案2】:

    您不能在服务器上过滤 mongo 集合属性的内容。

    使访问数组成为顶级集合/模型,您可以在服务器上按条件过滤。

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      • 2021-11-06
      • 2021-08-12
      • 2015-10-30
      相关资源
      最近更新 更多