1

我正在使用 FastAPI 开发一个 API,该 API 通过 Motor 与 Mongo DB 交互。我们的数据库包含有关各种疾病的文档,如下所示:

{
    "_id": {
        "$oid": "6008b21ba1285a480088ff48"
    },
    "names": ["heart_attack", "myocardial_infarction"],
    "umls": ["C0027051"],
    "risk_factors": ["smoking", "age < 45", "male", "obesity", "etc"],
    "risk_factors_umls": ["C0037369", "CXXXXXXX"],
    "symptoms_umls": ["C0008031", "etc."], # ids for symptoms 
    "is_emergency": true
}

我正在寻找正确的 MongoDB 查询语法(最好是一个小的 python 代码示例),它给出了风险因素或症状 ID 的列表,返回包含一个或多个这些 ID 或字符串的所有疾病文档。

大多数疾病都有不同数量的症状,因此 id 的顺序因文档而异。

由于我对 mongoDB 很陌生,我不确定正确的查询是什么样的。我尝试了多种变体,illness_collection.find()但到目前为止我还没有成功。

预先感谢您的帮助!

4

1 回答 1

0

您可以使用$or$in运算符的组合来做到这一点,如下所示:

let symptomList = ["smoking", "C0008031"];

db.collection.find(
{
    $or: [
        { risk_factors: { $in: symptomList } },
        { symptoms_umls: { $in: symptomList } }
    ]

})
于 2021-01-21T04:00:02.613 回答