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