
CollectionFind::fields는 Document의 필드 이름과 일치하는 필드를 반환하는 데 사용되지만, 반환되는 결과에 Document의 필드 이름이 아닌 필드도 포함되는 이유는 다음과 같습니다.
1. 포함된 필드: CollectionFind::fields에 명시적으로 포함되지 않은 필드는 기본적으로 반환됩니다. 예를 들어, Document의 필드 이름은 "name"이고 CollectionFind::fields에 "name"이 포함되어 있지만, 반환되는 결과에 "created_at"이나 "updated_at"과 같은 필드도 포함될 수 있습니다.
2. include와 exclude: CollectionFind::fields는 include와 exclude를 사용하여 필드를 제어할 수 있습니다. include를 사용하여 특정 필드를 반환하고, exclude를 사용하여 특정 필드를 제외할 수 있습니다.
3. projection: MongoDB의 projection을 사용하여 필드를 제어할 수 있습니다. projection을 사용하여 특정 필드를 반환하고, 다른 필드를 제외할 수 있습니다.
이 문제를 해결하는 방법은 다음과 같습니다.
1. CollectionFind::fields를 사용하여 명시적으로 필드를 제어하기: CollectionFind::fields에 명시적으로 포함하고자 하는 필드를 지정하여 반환되는 결과를 제어할 수 있습니다.
2. include와 exclude를 사용하여 필드를 제어하기: CollectionFind::fields에 include와 exclude를 사용하여 필드를 제어할 수 있습니다.
3. projection을 사용하여 필드를 제어하기: MongoDB의 projection을 사용하여 필드를 제어할 수 있습니다.
예를 들어, Document의 필드 이름은 "name"이고 CollectionFind::fields에 "name"이 포함되어 있지만, 반환되는 결과에 "created_at"이나 "updated_at"과 같은 필드도 포함되는 경우, CollectionFind::fields에 "created_at"이나 "updated_at"을 포함하거나, exclude를 사용하여 제외할 수 있습니다.
#hostingforum.kr
ruby
# CollectionFind::fields에 include를 사용하여 필드를 제어하기
CollectionFind::fields = ["name", "created_at"]
# CollectionFind::fields에 exclude를 사용하여 필드를 제어하기
CollectionFind::fields = ["name", :exclude => ["created_at", "updated_at"]]
# MongoDB의 projection을 사용하여 필드를 제어하기
CollectionFind::fields = { :name => 1, :created_at => 1 }
2025-08-05 21:51