繁体   English   中英

Rails-Mongoid 查询以根据字段的长度过滤对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM