首页 > 解决方案 > Ruby on Rails - Criteria - Mongoid - where 条件为 2 x 2 列

问题描述

我正在使用 RoR + MongoDB (Mongoid),我需要使用或条件按 2 列应用过滤器。

我看到了一些类似这样的建议,但没有奏效。

query = query.where(name: /#{attributes[:name]}/i).or(query.where(email: /#{attributes[:email]}/i))

如果我使用这个,看起来 or 将适用于所有条件:

query = query.where(name: /#{attributes[:name]}/i).or(email: /#{attributes[:email]}/i)

有人有什么建议吗?

标签: rubymongodbruby-on-rails-3mongoidcriteria

解决方案


据我了解,正确的查询应该是:

query = query.or([{name: /#{attributes[:name]}/}, {email: /#{attributes[:email]}/i}])

这将返回具有值为 from 的name属性的attributes[:name]文档或具有email值为from 的属性的文档attributes[:email]

这回答了你的问题了吗?


推荐阅读