Antipod Antipod - 4 months ago 110
C# Question

MongoDB C# driver, query by an array element using regex

I am using MongoDB C# driver version 2.2. My collection contains "Parent" objects. Each parent object has an array of children objects. Each child has name value:

"parent": {
"children":[
{ "name": "Bob", "age": 10},
{ "name": "Alice", "age": 7},
{ "name": "Tobias", "age": 11}
]
}


I need to translate the following code into C# statements / LINQ syntax:

db.getCollection('Parents').find({'parent.children': { $elemMatch: { 'name': { $regex: '.*ob.*', $options: 'im' } }}})


I have found there are methods like

var builder = Builders<BsonDocument>.Filter;
builder.Regex("parent.children.name", new BsonRegularExpression(".*ob.*")); //does not work with array


and

builder.AnyEq("parent.children.name", "ob"); //without regex


But I cannot understand how to combine them. Please advise.

UPDATE:

I am using the following for now, please correct me if you know a reason why it should not work correctly:

builder.AnyEq("parent.children.name", new BsonRegularExpression(".*ob.*"))

Answer

I am using the following for now:

builder.AnyEq("parent.children.name", new BsonRegularExpression(".*ob.*"))