我正在使用MongoDB,并且我已经构建好了以下查询。
对于这个例子,我使用Mongoose和coffescript。
不幸的是,它并不像我想象的那样工作,主要问题在于
这意味着字段
从我准备的测试中,我可以看到
我无法将它们分为两组,以便同时满足与字段
1 AccessToken.where('resource_owner_id').equals(event.resource_owner_id)
2 .where('revoked_at').equals(undefined)
3 .or([ { scopes: /resources/i }, { scopes: new RegExp(event.resource,'i') } ])
4 .or([ { device_ids: [] }, { device_ids: event.body.id } ])
对于这个例子,我使用Mongoose和coffescript。
不幸的是,它并不像我想象的那样工作,主要问题在于
or
语句。我想要的是第3行和第4行的两个or
是独立的。这意味着字段
scopes
(第3行)必须包含字符串resources
或存储在event.resource中的字符串,同时字段device_ids
必须为空或包含event.body.id
的id。从我准备的测试中,我可以看到
or
命令把所有条件放在一起。这意味着只要满足四个or条件中的一个,我就会得到文档。- { scopes: /resources/i }
- { scopes: new RegExp(event.resource,'i') }
- { device_ids: [] }
- { device_ids: event.body.id }
我无法将它们分为两组,以便同时满足与字段
scopes
相关的条件和与字段device_ids
相关的条件。希望问题已经描述清楚。谢谢。
$or
操作分开,您需要将它们放入一个$and
操作符中。请参见更新的回答。 - JohnnyHK