模块:Mongoid::Matcher::Expression Private

定义于:
lib/mongoid/matcher/ 表达式.rb

Overview

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

基本单例模块,用于评估内存中的给定文档是否与 MSQL查询表达式匹配。

类方法摘要折叠

类方法详细信息

匹配? (文档, expr) ⇒ true | false ,布尔值

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

返回文档是否满足查询表达式。

参数:

返回:

  • ( true | false )

    文档是否匹配。

  • 布尔值


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
# File 'lib/mongoid/matcher/ 表达式.rb', line 19

module_function def 匹配?(文档, expr)
  if expr.nil?
    提高 Errors::InvalidQuery, "表达式上下文中的 Nil 条件"
  end
  除非 哈希 === expr
    提高 Errors::InvalidQuery, " MQL查询必须以哈希形式提供"
  end
  expr.全部? do |k, expr_v|
    k = k.to_s
    if k == " $comment "
      # 无
      return true
    end
    if k.start_with?('$')
      表达式操作符.获取(k).匹配?(文档, expr_v)
    else
      values = 匹配器.extract_attribute(文档, k)
      if values.长度 > 0
        values.任何? do |v|
          FieldExpression.匹配?(true, v, expr_v)
        end
      else
        FieldExpression.匹配?(false, nil, expr_v)
      end
    end
  end
end