1

私の場合は次のとおりです。ユーザーが参加したアプリケーションを表すドキュメント配列が内部にあるドキュメントがあります (図を参照)。

ドキュメントの例

アプリケーション名に従って、ユーザーごとに 1 つのドキュメントだけを取得する必要があります...次のコードを記述し、動作します...しかし、すべてのアプリケーションを取得します。1つだけ返す方法は?

public Application GetUserApplication(string username)
        {
            var query = Query.And(Query.EQ("UserName", username), Query.ElemMatch("Applications", 
                Query.EQ("Key", this.applicationKey)));

            MongoCursor<BsonDocument> cursor = this.users.FindAs<BsonDocument>(query);

            cursor.SetFields(new string[]{ "Applications" });
            cursor.SetLimit(1);

            var it = cursor.GetEnumerator();

            var apps = it.MoveNext() ? it.Current["Applications"].AsBsonArray : null;

            ...
        }
4

1 に答える 1

5

一致した要素のインデックスを識別するには$、プロジェクションに位置演算子を追加する必要があります。SetFields

cursor.SetFields(new string[]{ "Applications.$" });

ところで、次の整頓されていない構文を使用できます。

cursor.SetFields("Applications.$");
于 2013-02-08T20:58:34.843 に答える