模块: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 )

    值是否匹配。

  • 布尔值


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
47
48
# File 'lib/mongoid/matcher/elem_match.rb', line 21

module_function def 匹配?(存在, , 条件)
  除非 哈希 === 条件
    提高 Errors::InvalidQuery, " $elemMatch 需要哈希操作数: #{ Errors :: InvalidQuery . truncate_expr ( condition ) } "
  end
  if 阵列 ===  && !.空?
    .任何? do |v|
      ElemMatchExpression.匹配?(v, 条件)
    end
  else
    # 验证条件是否有效,尽管我们永远不会尝试
    # 匹配它。
    条件. do |k, v|
      k = k.to_s
      if k.start_with?('$')
        开始
          表达式操作符.获取(k)
        救援 Mongoid::Errors::InvalidExpressionOperator
          开始
            FieldOperator.获取(k)
          救援 Mongoid::Errors::InvalidFieldOperator => 排除
            提高 Mongoid::Errors::InvalidElemMatchOperator.new(排除.运算符)
          end
        end
      end
    end
    false
  end
end