2016-01-14 66 views
0

糟糕的方式(直接工作):MongoDB findOne多個查詢字段?

user = 
    yield users.findOne({ 
     'profile.personal.email': email 
    }); 
if(user === null) { 
    user = 
     yield users.findOne({ 
      'profile.company.email': email 
     }); 
} 

我想是這樣的:

user = 
    yield users.findOne({ 
     'profile.personal.email': email, 
     'profile.company.email': email 
    }); 

以上返回null。我想要求上述兩個字段中的任何一個的第一個匹配。我很確定mongodb可以做到這一點。我想不是。因此,如果發現任一電子郵件,它應該返回文檔。

我正在使用Koajs與和尚模塊。如果需要,我可以使用聚合。

回答

1

想起$or操作:

user = 
    yield users.findOne({ 
     $or: [{ 
      'profile.personal.email': email 
     }, { 
      'profile.company.email': email 
     }] 
    });