모듈: Mongoid::Fields::ClassMethods

다음에 정의됨:
lib/mongoid/fields.rb,
lib/mongoid/fields.rb

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#attribute_namesArray<String>

이 객체 에서 사용할 수 있는 속성의 이름 배열 을 반환합니다.

ORM에 구애받지 않는 방식으로 필드 이름을 제공합니다. Rails v3.1+ 은(는) 이 메서드를 사용하여 JSON 요청에서 매개변수를 자동으로 래핑합니다.

예시:

필드 이름 가져오기

Model.attribute_names

반환합니다:

  • (Array<String>)

    필드 이름



449
450
451
# 파일 'lib/mongoid/fields.rb', 449줄

def attribute_names
  필드.
end

#auto_embed_field(name, 모델: 'voyage-4 ', num_dimensions: nil, 양자화: nil, 유사도: nil, 인덱스: nil) ⇒ 객체

텍스트 필드 선언하고 자동 임베딩(autoEmbed) 유형을 사용하여 텍스트 필드에 해당하는 Atlas Vector Search 인덱스 등록합니다. Atlas 인덱스 및 쿼리 시점에 임베딩을 자동으로 생성합니다. 미리 계산된 벡터가 필요하지 않습니다.

예시:

최소한의 선언.

class Article
  include Mongoid::Document
  auto_embed_field :description
end

모든 옵션 제공.

class Article
  include Mongoid::Document
  auto_embed_field :description,
                   model: 'voyage-4',
                   num_dimensions: 512,
                   quantization: 'binary',
                   similarity: 'cosine',
                   index: :article_embed
end

매개변수:

  • 이름 (기호 | string)

    선언하고 자동으로 포함할 텍스트 필드 의 이름입니다.

  • 모델 (string) (기본값: 'voyage- '4 )

    임베딩 모델 이름입니다. 기본값은 'voyage-4'(권장)입니다. 공개 미리 보기에서 지원되는 값: voyage-4-large, voyage-4, voyage-4-rite, voyage-code-3.

  • num_dimensions (정수 | nil) (기본값: nil)

    벡터 차원의 개수입니다. 지원되는 값: 256, 512, 1024, 2048. 기본값: 1024.

  • 양자화 (string | nil) (기본값: nil)

    양자화 유형: float, scalar, binary 또는 binaryNoRescore. 기본값: 스칼라.

  • 유사성 (string | nil) (기본값: nil)

    유사성 함수: dotProduct, 코사인 또는 유클리드.

  • index (기호 | 문자열 | nil) (기본값: nil)

    인덱스 이름입니다. 생략하면 인덱스 에 이름이 지정되지 않으며 Atlas 이를 ' 기본값'이라고 합니다.



542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
# 파일 'lib/mongoid/fields.rb', 542줄

def auto_embed_field(이름, model: 'voyage-4', num_dimensions: nil, 양자화: nil, 유사성: nil, index: nil)
  필드(이름, 유형: 문자열)

  field_spec = {
    유형: 'autoEmbed',
    모달리티: 'text',
    경로: 이름.to_s,
    model: 모델
  }
  field_spec[:num차원] = num_dimensions 만약 num_dimensions
  field_spec[:quantization]  = 양자화  만약 양자화
  field_spec[:유사성]    = 유사성    만약 유사성

  만약 index
    vector_search_index(index, 필드: [ field_spec ])
  other
    vector_search_index(필드: [ field_spec ])
  end
end

#clean_localized_field_names(name) ⇒ 필드

지정된 필드 이름에서 _translations를 제거합니다. 이 작업은 동일한 이름(예: 접미사 _translations 포함)을 가진 필드 이름 또는 관계가 아직 존재하지 않는 경우에만 수행됩니다. 기존 필드 에 대한 이 검사는 재귀적으로 수행됩니다.

매개변수:

  • 이름 (string | 기호)

    정리할 필드 의 이름입니다.

반환합니다:

  • (필드)

    _translations가 없는 필드 이름



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# 파일 'lib/mongoid/fields.rb', 98줄

def Clean_localized_field_names(이름)
  이름 = database_field_name(이름.to_s)

  class = self
  []. do |res|
    ar = 이름.split('.')
    ar.each_with_index do |fn, i|
       = fn
      하지 않는 한 class.필드.키?(fn) || class.관계.키?(fn)
         = 만약 fn.end_with?(TRANSLATIONS_SFX)
                fn.delete_suffix(TRANSLATIONS_SFX)
              other
                fn
              end

      end
      res.push()

      만약 class.필드.키?(fn)
        res.push(ar.제거(i + 1).가입('.')) 하지 않는 한 i == ar.분량 - 1
        휴식
      elsif class.관계.키?(fn)
        class = class.관계[].class
      end
    end
  end.가입('.')
end

#database_field_name(name) ⇒ string

데이터베이스에 저장되는 제공된 필드의 이름을 가져옵니다. 필드의 별칭 지정 여부를 결정하는 데 사용됩니다.

매개변수:

  • 이름 (string | 기호)

    가져올 이름입니다.

반환합니다:

  • (string)

    db에 저장되는 필드 의 이름입니다.



459
460
461
# 파일 'lib/mongoid/fields.rb', 459줄

def database_field_name(이름)
  필드.database_field_name(이름, 관계, aliased_fields, aliased_associations)
end

#extract_id_field(attributes) ⇒ 객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 클래스에 정의된 별칭을 기반으로 지정된 속성 해시에서 ID 필드 를 추출합니다.

매개변수:

  • 속성 (해시)

    검사할 속성입니다.

반환합니다:

  • (객체)

    ID 값입니다.



81
82
83
84
85
86
87
88
# 파일 'lib/mongoid/fields.rb', 81줄

def extract_id_field(속성)
  id_fields. do |k|
    만약 v = 속성[k]
      반환 v
    end
  end
  nil
end

필드 #필드(이름, 옵션 = {}) ⇒ 필드

문서에서 액세스할 수 있는 모든 필드를 정의합니다. 정의된 각 필드 에 대해 getter 및 setter가 문서의 인스턴스 메서드로 추가됩니다.

예시:

필드 를 정의합니다.

field :score, type: Integer, default: 0

매개변수:

  • 이름 (기호)

    필드의 이름입니다.

  • 옵션 (해시) (기본값: {})

    필드 에 전달할 옵션입니다.

옵션 해시(options):

  • :type (클래스 | 기호 | string)

    필드 의 유형입니다.

  • :label (string)

    필드의 레이블입니다.

  • :default (Object | Proc)

    필드의 기본값.

반환합니다:

  • (필드)

    생성된 필드



577
578
579
580
581
582
583
584
585
# 파일 'lib/mongoid/fields.rb', 577줄

def 필드(이름, 옵션 = {})
  명명된 = 이름.to_s
  유효성 검사기::매크로.유효성 검사(self, 이름, 옵션)
  추가됨 = add_field(명명된, 옵션)
  descendants. do |하위 클래스|
    하위 클래스.add_field(명명된, 옵션)
  end
  추가됨
end

#id_fieldsArray<Symbol | string>

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 모델 클래스의 ID 필드 목록을 문자열과 기호로 반환합니다.

반환합니다:

  • (Array<Symbol | string>)

    ID 필드 목록입니다.



62
63
64
65
66
67
68
69
70
71
# 파일 'lib/mongoid/fields.rb', 62줄

def id_fields
  IDS.dup. do |id_fields|
    aliased_fields. do |k, v|
      만약 v == '_id'
        id_fields << k.to_sym
        id_fields << k
      end
    end
  end
end

#replace_field(name, type) ⇒ 직렬화 가능

필드 를 새 유형으로 바꿉니다.

예시:

필드 를 바꿉니다.

Model.replace_field("_id", String)

매개변수:

  • 이름 (string)

    필드의 이름입니다.

  • 유형 (클래스)

    새로운 유형의 필드 입니다.

반환합니다:



596
597
598
599
# 파일 'lib/mongoid/fields.rb', 596줄

def replace_field(이름, 유형)
  remove_defaults(이름)
  add_field(이름, 필드[이름].옵션.merge(유형: 유형))
end

#traverse_association_tree(key) {|The, When| ... } ⇒ 필드

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

연관 트리를 아래로 이동하여 주어진 키에 대한 필드 를 검색 합니다.

매개변수:

  • (string)

    연관 트리를 검색 하는 데 사용되는 키입니다.

  • &block

    차단.

수율 매개변수:

  • (기호)

    현재 메서드.

  • (기호 | string)

    필드 또는 관계.

  • 여부 (true | false)

    두 번째 yield 매개변수가 필드 인지 여부입니다.

반환합니다:

  • (필드)

    검색 이 끝날 때 지정된 키에 대해 발견된 필드 입니다. 마지막으로 발견된 것이 연관 관계이거나 주어진 키에 대한 필드 가 없는 경우 nil을 반환합니다.



627
628
629
# 파일 'lib/mongoid/fields.rb', 627줄

def traverse_association_tree(, &차단)
  필드.traverse_association_tree(, 필드, 관계, aliased_associations, &차단)
end

#using_object_ids?true | false

BSON::ObjectIds 을 ID로 사용하고 있는지 여부를 확인할 수 있는 편리한 메서드입니다.

예시:

이 클래스는 객체 ID를 사용하나요?

person.using_object_ids?

반환합니다:

  • (true | false)

    클래스가 ID에 BSON::ObjectIds를 사용하는 경우.



608
609
610
# 파일 'lib/mongoid/fields.rb', 608줄

def using_object_ids?
  필드['_id'].object_id_field?
end

#vector_field(이름, 차원:, 유사도: '코사인', 인덱스: nil) ⇒ 객체

벡터 임베딩 필드 선언하고 이에 해당하는 Atlas Vector Search 인덱스 한 번에 등록합니다.

필드 배열로 저장됩니다. 고급 인덱스 옵션(양자화, 인덱싱 방법, HNSW 조정)의 경우 명시적 field + vector_search_index 조합을 대신 사용합니다.

예시:

최소한의 선언.

class Article
  include Mongoid::Document
  vector_field :embedding, dimensions: 1536
end

모든 옵션 제공.

class Article
  include Mongoid::Document
  vector_field :embedding, dimensions: 1536,
                           similarity: 'dotProduct',
                           index: :article_vectors
end

매개변수:

  • 이름 (기호 | string)

    임베딩 필드 의 이름입니다.

  • 차원 (정수)

    벡터 차원의 개수입니다. 필수입니다.

  • 유사성 (string) (기본값: 'cosine')

    사용할 유사성 지표: '코사인'(기본값), '유클리드' 또는 'dotProduct'.

  • index (기호 | 문자열 | nil) (기본값: nil)

    벡터 검색 인덱스 의 이름입니다. 생략하면 인덱스 에 이름이 지정되지 않으며 Atlas 이를 ' 기본값'이라고 합니다.



490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
# 파일 'lib/mongoid/fields.rb', 490줄

def vector_field(이름, 차원:, 유사성: 'cosine', index: nil)
  필드(이름, 유형: 배열)

  field_spec = {
    유형: 'vector ',
    경로: 이름.to_s,
    num차원: 차원,
    유사성: 유사성
  }

  만약 index
    vector_search_index(index, 필드: [ field_spec ])
  other
    vector_search_index(필드: [ field_spec ])
  end
end