मेरा मानना है कि आप 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 } } }] })