模块:Mongoid::Criteria::Findable

包含在:
Mongoid::Criteria
定义于:
lib/mongoid/criteria/findable.rb

Overview

Mongoid::Criteria 中包含的 Mixin 模块增加了按 ID 查找文档的能力。

实例方法摘要折叠

实例方法详细信息

#execute_or_rise (ids, multi) ⇒文档|数组 < Document >

执行条件,如果未找到文档,则引发错误。

例子:

执行或引发

criteria.execute_or_raise(id)

参数:

  • id ( Object )

    参数通过了。

  • ( true | false )

    参数是否为列表,因此返回值应为大量。

返回:

引发:



23
24
25
26
27
# File 'lib/mongoid/criteria/findable.rb', line 23

def 执行或引发(id, )
  结果 = multiple_from_db(id)
  check_for_missing_documents!(结果, id)
   ? 结果 : 结果.first
end

# find (*args) ⇒文档|数组 < Document >

注意:

每个参数都可以是单独的 ID、ID 数组或嵌套数组。 每个数组都将被展平。

在条件中查找与提供的 ID 相匹配的文档。

例子:

通过 ID 查找。

criteria.find(BSON::ObjectId.new)

按多个 ID 查找。

criteria.find([ BSON::ObjectId.new, BSON::ObjectId.new ])

参数:

  • *args ( [ Object | Array<Object> ]... )

    要查找的 ID。

返回:



43
44
45
46
47
# File 'lib/mongoid/criteria/findable.rb', line 43

def find(*args)
  id = prepare_ids_for_find(args)
  raise_invalid if id.任何?(:nil?)
  for_ids(id).执行或引发(id, multi_args?(args))
end

# for_ids (id) ⇒ Criteria

Criteria添加一个条件,指定必须匹配的 ID。

例子:

添加单个 ID 条件。

criteria.for_ids([ 1 ])

添加多个 ID 条件。

criteria.for_ids([ 1, 2 ])

参数:

  • id ( Array )

    ID 数组。

返回:



60
61
62
63
64
65
66
67
# File 'lib/mongoid/criteria/findable.rb', line 60

def for_ids(id)
  id = mongoize_id(id)
  if id.size > 1
    发送(id_finder, { _id: { " $in " => id }})
  else
    发送(id_finder, { _id: id.first })
  end
end

#multiple_from_db(ids) ⇒ Array<Document>

从身份映射中获取文档,如果未找到,则访问数据库。

例子:

从地图或条件中获取文档。

criteria.multiple_from_map_or_db(ids)

参数:

  • id ( Array<Object> )

    搜索到的 ID。

返回:

  • ( Array< Document > )

    找到的文档。



78
79
80
81
82
# File 'lib/mongoid/criteria/findable.rb', line 78

def multiple_from_db(id)
  return 条目 if 嵌入式?
  id = mongoize_id(id)
  id.空? ? [] : from_database(id)
end