我想根据字段的长度过滤集合。示例:对于集合Band,我想要带名称的长度等于10的对象。
我可以通过两种方法进行此操作。在这些示例中,我们假设我有以下模型:
class Band include Mongoid::Document field :name, type: String end
[如果您使用的是MongoDB服务器3.6版或更高版本,则可以使用$expr运算符在查询中包括聚合操作。在此示例中,我使用$expr运算符查找$strLenCP字段具有5个Unicode代码点的任何文档:
$expr
$strLenCP
您还可以使用与任何五个字符的字符串匹配的Ruby正则表达式:
name
我怀疑聚合会更有效,但是知道一些做某事的方式也不会伤害。