模块:Mongoid::Matcher::ElemMatch Private

定义于:
lib/mongoid/matcher/elem_match.rb

Overview

该模块是私有 API 的一部分。 您应尽可能避免使用此模块,因为它将来可能会被删除或更改。

$elemMatch表达式的内存匹配器。

类方法摘要折叠

类方法详细信息

。匹配?(_exists, value, condition) ⇒ true | false,布尔值

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回值是否满足 $elemMatch表达式。

参数:

  • 存在 ( true | false ) —

    未使用。

  • 值 ( Object | Array<Object> ) —

    要检查的值。

  • expr (哈希) —

    $elemMatch 条件谓词。

返回:

  • ( true | false ) —

    值是否匹配。

  • (布尔值)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/mongoid/matcher/elem_match.rb', line 18

module_function def 匹配?(_exists, 值, 条件)
  除非 条件.is_a?(哈希)
    提高 Errors::InvalidQuery, " $elemMatch 需要哈希操作数: #{ Errors :: InvalidQuery . truncate_expr ( condition ) } "
  end

  if 值.is_a?(阵列) && !值.空?
    值.任何? do |v|
      ElemMatchExpression.匹配?(v, 条件)
    end
  else
    # 验证条件是否有效,尽管我们永远不会尝试
    # 匹配它。
    条件.每 do |k, _v|
      k = k.to_s
      来年 除非 k.start_with?('$')

      开始
        表达式操作符.获取(k)
      救援 Mongoid::Errors::InvalidExpressionOperator
        开始
          FieldOperator.获取(k)
        救援 Mongoid::Errors::InvalidFieldOperator => 排除
          提高 Mongoid::Errors::InvalidElemMatchOperator.new(排除.运算符)
        end
      end
    end
    false
  end
end