質問: 公式のC#ドライバを使用して、エンベデッドアレイから1つの要素を選択する方法。ベストプラクティス? このドックフォームでは、私は 埋め込み配列からの単一の参加者オブジェクト ``` { _id: someCourseId, CourseName: "someName", Participants[ {UserId: X Name: "person1"}, {UserId:Y, Name:"person2"}, {UserID:Z, Name:"person3"} ] } ``` 正式なC#シャープドライバでクエリを書くにはどうすればいいですか? ユーザID Yの埋め込み配列要素を返しますか? 今、私は、IDがYの参加者を持つコースを選択できます Query.EQ( "Participants.UserId"、Y)を使用すると、 CourseオブジェクトのParticipantsフィールドを使用して SetFields( "Participants")、この配列が巨大なら、私はしたくない 配列全体を取り出しますが、要素は1つだけです。これは可能ですか? そうでない場合は、埋め込みを使用しないことをお勧めします 特定の要素をフェッチする必要がある場合の配列 代わりに、配列値を保持するために別のコレクションを使用する必要があります RDBMSのように "ルートドックへの外部キー"があります。 つまり、私の例では、Participantsコレクションを作成しました。 各ドックはコースのIDを保持します。同意しますか?
回答: このようにスライスを使用することができます: ``` //it will skip 0 elements and load only one element from nested array var slice = Fields.Slice("Participants", 0, 1); ``` また、mongodbは常にルートドキュメントを返しますが、ネストされた配列のロードとサイズを指定するフィールドを指定することによって、このドキュメントの内容を変更することができます。