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