[英]Rails- Mongoid query to filter objects based on length of a field
我想根据字段的长度过滤集合。 示例:对于集合带,我想要带名称长度等于 10 的对象。
我认为有两种方法可以做到这一点。 在这些示例中,让我们假设我有以下模型:
class Band
include Mongoid::Document
field :name, type: String
end
如果您使用的是 MongoDB 服务器版本 3.6 或更高版本,则可以使用$expr
运算符在查询中包含聚合操作。 在此示例中,我使用$strLenCP
运算符查找name
字段具有 5 个 Unicode 代码点的任何文档:
Band.where("$expr": { "$eq": [ { "$strLenCP": "$name" }, 5 ] })
您还可以使用匹配任何五个字符的字符串的 Ruby 正则表达式:
Band.where(name: /\A.{5}\z/)
我怀疑聚合会更高效,但知道一些做某事的方法并没有什么坏处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.