0

私のドキュメントには、タイプのプロパティがありますList<string>List<string>文字列のセットがこのプロパティの任意のアイテムと一致するコレクションからすべてのドキュメントを返したいです。

私はこれを次の質問のように構築したいと思いますが、C#では:

MongoDBは、キーが配列の文字列と等しい場所を検索します

私はこれがオフになっていることを知っていますが、それは私の最善の試みです:

var queryItems = new List<QueryComplete>();
queryItems.Add(Query.EQ("PropertyName", "test"));
var query= Query.Or(queryItems.ToArray());
var qd = new QueryDocument(new BsonDocument { query.ToBsonDocument() });
var result = GetCollection<CollectionName>().FindAs<Type>(qd)
4

2 に答える 2

1

あなたが探しているものがここに記述されているように見えます:

含む

このメソッドは、配列(または配列のような)フィールドまたはプロパティに提供された値のいずれかが含まれているかどうかをテストするために使用されます。

var query =
    from c in collection.AsQueryable<C>()
    where c.A.ContainsAny(new[] { 1, 2, 3 })
    select c;
// or
var query =
    collection.AsQueryable<C>()
    .Where(c => c.A.ContainsAny(new[] { 1, 2, 3 }));
于 2012-07-25T07:06:23.960 に答える
1

何らかの理由でLINQを使用したくない場合は、クエリビルダーを使用して次のように記述できます。

var setOfStrings = new BsonValue[] { "a", "b", "c" };
var query = Query.Or(
    Query.EQ("PropertyName", "test"),
    Query.In("List", setOfStrings)
);
var cursor = collection.FindAs<C>(query);

ネイティブのMongoDBクエリがどのように見えるかを再確認する場合は、次を使用できます。

var json = query.ToJson();

この場合、同等のMongoDBクエリは次のとおりです。

{ "$or" : [
    { "PropertyName" : "test" },
    { "List" : { "$in" : ["a", "b", "c"] } }
] }

これが探していたネイティブのMongoDBクエリでない場合は、私に知らせてください。

psバージョン1.5には新しいクエリビルダーがあり、QueryCompleteは廃止されました。

于 2012-07-25T15:37:59.643 に答える