我已经看到人们使用OR运算符的三种方式...
where: { $or : [ {attr:val}, {attr:val}] }
-
where: { $or : { attr:val, attr:val} }
-
where: { attr: { $or: [val, val] } }
所有这些有效吗?还有任何陷阱?
答案 0 :(得分:1)
我可能错了,不打算投票。
使用official documentation中的示例更好。
并启用logging mode (see logging param)以查看特定查询会发生什么情况
但是我会尝试给出一些想法。
我更喜欢这个-因为它更具可读性:
where: { $or : [ {attr:val1, some: val3}, {attr:val2} ] }
是
... WHERE ((attr = val1 AND some = val3) OR (attr = val2))
我无法确定比较哪个值。由于它不是数组,因此我可能会猜测它将使用最后一个定义,并且由于没有其他字段来构建查询,因此它不会使用OR
where: { $or : { attr: val1, attr: val2} }
是
... WHERE attr = val2
额外:
where: {
user_id: 5,
$or : { attr: val1, attr: val2}
}
是
... WHERE user_id = 5 OR attr = val2
第三者有点含糊,我建议使用$in
where: { attr: { $in: [val1, val2] } }
是
... WHERE attr IN (val1, val2)