sql >> データベース >  >> NoSQL >> MongoDB

MongoDB C#プロパティ値を含むオブジェクトのクエリ配列

    Inをお探しだと思います FilterDefinition。これにより、ビルダーは次のようになります。

    return Builders<MyObject>.Filter.ElemMatch(
                o => o.arrayProperty,
                Builders<ArrayProperty>.Filter.In(y => y.string1, listToFind));
    

    これにより、このクエリが作成されます

    db.MyObject.find({ "arrayProperty" : { "$elemMatch" : { "string1" : { "$in" : ["a", "b", "aString"] } } } })
    

    正規表現を使用できるようにするには、別のクエリを作成する必要があります(私はコーヒーを飲んでいないので、これは保証なしです)

            var listToFind = new List<string> { "a", "b", "astring" };
    
            var regexList = listToFind.Select(x => new BsonRegularExpression(x, "i"));
    
            var filterList = new List<FilterDefinition<MyObject>>();
            foreach (var bsonRegularExpression in regexList)
            {
                FilterDefinition<MyObject> fil = Builders<MyObject>.Filter.ElemMatch(o => o.arrayProperty, Builders<ArrayProperty>.Filter.Regex(
                     x => x.string1,
                     bsonRegularExpression));
    
                filterList.Add(fil);
            }
    
    
            var orFilter = Builders<MyObject>.Filter.Or(filterList);
    
            var result = collection.Find(orFilter).ToList();
    

    フォロークエリを作成します

    db.MyObject.find({ "$or" : [{ "arrayProperty" : { "$elemMatch" : { "string1" : /a/i } } }, { "arrayProperty" : { "$elemMatch" : { "string1" : /b/i } } }, { "arrayProperty" : { "$elemMatch" : { "string1" : /astring/i } } }] })
    


    1. Redisでの実行/スケジューリングの遅延?

    2. resque-schedulerがジョブの削除に失敗する

    3. MongooseおよびMongoDBNode.JSドライバーのロギングを有効にする方法

    4. MongoDBのシェルで20を超えるアイテム(ドキュメント)を印刷するにはどうすればよいですか?