2015-02-05 101 views
2

我正在嘗試用兩個'或'子句寫一個航海水線查詢,其中兩個都必須是真的,但它似乎不起作用。這是我嘗試過的查詢,但只有當其中一個'或'子句符合其條件時纔會提取,而我只在滿足'或'子句'條件時才返回',而不是一個。這是一個錯誤還是有另一種方式來做到這一點?水線查詢where子句中有2個「或」子句

Employee.find() 
.where({ 
    or: [ 
    {locationId: employee.currentLocation.id}, 
    {facilityId: employee.facilityId, userName:employee.userName,accountOwner: true} 
]}) 
.where({ 
    or:[ 
    {employeeId: { startsWith: params.search.value }}, 
    {fullName: { startsWith: params.search.value }}, 
    {street: { startsWith: params.search.value }},        
    {emailAddress: { startsWith: params.search.value }}, 
    {employeeType: { startsWith: params.search.value }}, 
    {status: { startsWith: params.search.value }} 
]}); 
+0

這是怎麼一個OR [作品(HTTP://en.wikipedia。組織/維基/ Boolean_algebra#Basic_operations)。 – Osukaa 2015-03-09 02:19:15

回答

0

如果您使用蒙戈適配器,您可以執行以下操作以兩個或語句組合在一起:

Employee.find().where({ 
    $and: [{ 
    or: [{ 
     locationId: employee.currentLocation.id 
    }, { 
     facilityId: employee.facilityId, 
     userName: employee.userName, 
     accountOwner: true, 
    }], 
    }, { 
    or:[{ 
     employeeId: { startsWith: params.search.value } 
    }, { 
     fullName: { startsWith: params.search.value } 
    }, { 
     street: { startsWith: params.search.value } 
    }, { 
     emailAddress: { startsWith: params.search.value } 
    }, { 
     employeeType: { startsWith: params.search.value } 
    }, { 
     status: { startsWith: params.search.value } 
    }], 
    }], 
});