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 }}
]});
4

1 回答 1

0

如果您使用的是 mongo 适配器,则可以对两个 OR 语句执行以下操作:

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 }
    }],
  }],
});
于 2016-08-11T14:08:25.390 回答