什么是正确的MongoDB查询找到包含一个或多个项目在一个(无序)列表中的所有文档?



我正在使用通过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 } }
]
})

最新更新