修改 rails mongoid 查询中的值

Posted

技术标签:

【中文标题】修改 rails mongoid 查询中的值【英文标题】:Modify a value inside a rails mongoid query 【发布时间】:2021-06-01 06:49:04 【问题描述】:

我将电话号码以各种格式存储在用户模型的数据库中。以下都是可能的。

+306974135662, 306974135662, 30 6974135662

然后从前端,我得到一个带有加号且没有空格的特定格式。

+306974135662

我想写一个匹配以上所有格式的 mongoid 查询。这可能吗?

User.where(phone: params[phone])

应该返回所有 3 个用户的电话号码 +306974135662、306974135662 和 30 6974135662

【问题讨论】:

这能回答你的问题吗? Use LIKE/regex with variable in mongoid 如果您知道所有可能的格式,请搜索所有排列:User.where(phone: '$in': ['+306974135662', '306974135662', '30 6974135662'] )。否则在插入时标准化。 可能的组合太多,无法生成有效的正则表达式。 【参考方案1】:

选项 1:在输入电话号码时存储它们,使用正则表达式进行匹配。

选项 2:将电话号码存储在一个字段中。在另一个字段存储电话号码的规范化表示(您的示例中的第二个)。匹配规范化的表示。

第二个选项需要额外的磁盘空间、内存和预处理,但可以让查询更简单、更快。

【讨论】:

以上是关于修改 rails mongoid 查询中的值的主要内容,如果未能解决你的问题,请参考以下文章