MongoDB 在多个子文档中搜索多个字段

问题描述

我的 MongoDB 数据结构如下所示:

    {
        "id": "7118592","passages": [
             {
                 "infons": {
                     "article-id_pmid": "32292259","title": "Keywords","type": "front","section_type": "TITLE"
                  },"text": "Understanding of guidance for acupuncture and moxibustion interventions on COVID-19 (Second edition) issued by CAAM"
             },{
                 "infons": {
                     "section_type": "ABSTRACT","type": "abstract","section": "Abstract"
                 },"offset": 116,"text": "At present,the situation of global fight against COVID-19 is serIoUs. WHO (World Health Organization)-China Joint Mission fully confirms the success of \"China's model\" against COVID-19 in the report. In fact,one particular power in \"China's model\" is acupuncture and moxibustion of Traditional Chinese medicine. To better apply \"non-pharmaceutic measures\":the external technique of Traditional Chinese medicine,in the article,the main content of Guidance for acupuncture and moxibustion interventions on COVID-19 (Second edition) issued by China Association of Acupuncture-Moxibution is introduced and the discussion is stressed on the selection of moxibustion device and the duration of its exertion."
             }
         ]
    }

我想请求同一个子文档中的 article-id_pmidtext,还有 text 子文档中包含 infons 字段的 section_type : ABSTRACTtype: abstract
我已经尝试过这个请求,但结果不是我要搜索的:

db.mydata.find({$and:[{"passages.infons.article-id_pmid$":{$exists: true}},{"passages.infons.section_type":"ABSTRACT"},{"passages.infons.type":"abstract"}]},{"passages.infons.article-id_pmid.$":1,_id:0,"passages.text":1})

解决方法

每个顶级条件都是独立处理的。

使用 https://docs.mongodb.com/manual/reference/operator/query/elemMatch/ 对同一个数组元素指定多个条件。