2015-02-05 71 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 } 
    }], 
    }], 
});