假设在症状_N 中的" A001"," A002"," A003" 表示 "鼻子过敏"
假设" Z001"," Z002" 症状_N 意味着"鼻癌"
我想找到那些患有鼻癌并且在患上癌症之前已经鼻子过敏的人。
例如,以下2条记录达到了我想要的目标。
我可以推断杰克得了“鼻子癌"在2015-04-02,
他得了鼻子过敏"在2011-04-02。
我可以使用 $或聚合运算符找到鼻子过敏记录。比如db.collection.find({"$or": OR_CONDITIONS})
我不知道如何在MongoDB中完成复合条件查询。
{
"name": "Jack",
"symptoms_1": "B00 ",
"symptoms_2": "A001 ",
"symptoms_3": " ",
"datetime": "2011-04-02"
},
....
{
"name": "Jack",
"symptoms_1": "",
"symptoms_2": "",
"symptoms_3": "Z001",
"datetime": "2015-04-02"
},
答案 0 :(得分:0)
您将条件放在[{},{},{},{}]数组中(因为数组是有效的json)。
db.inventory.find( { $or: [ { "symptom_1": "Z001" }, {"symptom_2": "Z002" }] })
实际上,您可能正在寻找适用于公共字段的$ in运算符
db.collection.find({ "symptom_1": { $in: ["Z001", "Z002", "A001", "A002", "A003"]});
似乎你想通过所有症状字段进行梳理,所以要同时使用$或$ in
db.collection.find({$or:
[
{"symptom_1": { $in: ["Z001", "Z002", "A001", "A002", "A003"]}},
{"symptom_2": { $in: ["Z001", "Z002", "A001", "A002", "A003"]}} ,
...
]} );
大括号可能不匹配,但从那开始。