我正在使用通过Motor与Mongo DB交互的FastAPI。我们的数据库包含各种疾病的文档,如下所示:
{
"_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()
的多种变体,但到目前为止我还没有成功。
提前感谢您的帮助!
您可以将$or
和$in
操作符组合使用,如下所示:
let symptomList = ["smoking", "C0008031"];
db.collection.find(
{
$or: [
{ risk_factors: { $in: symptomList } },
{ symptoms_umls: { $in: symptomList } }
]
})