2015-04-02 51 views
-1

假设“A001”, “A002”, “A003”symptoms_N意味着“鼻子过敏”如何使用多个条件查询和这些条件都依赖

假设“Z001”,“ Z002"symptoms_N意味着‘鼻癌’

我想找到那些谁得到鼻癌和民政g^ot 鼻子过敏得癌症之前。

例如,以下2条记录打到了我想要的目标。

我可以推断杰克得到了“鼻癌”在2015年4月2日,

和他所拥有“鼻子过敏” 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

您将条件放在[{},{},{},{}]数组中(因为数组是有效的json)。

db.inventory.find({ $or: [ { "symptom_1": "Z001" }, {"symptom_2": "Z002" }] }) 
其实

,你可能会寻求运营商在一个公共的场

db.collection.find({ "symptom_1": { $in: ["Z001", "Z002", "A001", "A002", "A003"]}); 

工作的$,它似乎想要梳通所有症状字段,以便同时使用$或和$作为

db.collection.find({$or: 
[ 
{"symptom_1": { $in: ["Z001", "Z002", "A001", "A002", "A003"]}}, 
{"symptom_2": { $in: ["Z001", "Z002", "A001", "A002", "A003"]}} , 
    ... 
]}); 

大括号可能不匹配,但从此开始。

+0

我知道了。但如何添加可以查询某人的相关条件首先患有过敏反应,之后又得了癌症? – newBike 2015-04-02 06:14:28

+0

那么你需要看看聚合不简单的发现。你的鼻癌,鼻子过敏是混淆这个问题。尝试“A001”,“A002”,“A003”意味着X和...意味着Y或者简单地放弃多个条件并使用A001和Z001 – 2015-04-02 17:58:05