修改 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 查询中的值的主要内容,如果未能解决你的问题,请参考以下文章

从导轨mongoid中查询大量键

自定义 Mongoid 4.0.0 _id 包含 . (点)不能通过参数查询(Rails 4)

Rails,mongoid,heroku 性能

rails查询mongodb通用查询

嵌套属性中的 Rails/Mongoid 错误消息

如何将内存中的 MongoDB 与 Rails、Mongoid 和 Rspec 一起使用?