Hi,
i'm playing around with nested arrays:
Let's say I have the following nested array:
Nested: [[1,2,3][4,5,6][7,8,9]]
Now I want to match all documents with a nested array containing 5.
So in mongo shell my query would look like:
{''Nested": { $elemMatch: {$elemMatch: {$eq: 5} } } }
In the C# 2.0 driver I can't do the nested $elemMatch as it always want's a named field as first parameter. I don't know how to use
The outer one is simple:
var filter = Builders<TParentDocument>.Filter.ElemMatch(t => t.Nested, subFilter);
I tried multiple things for the inner one (and probably a few more I can't remember):
var subFilter =
Builders<IEnumerable<int>>.Filter.ElemMatch(x => x,
Builders<int>.Filter.Eq(x => x,5)); // ArgumentNullException
var subFilter = Builders<IEnumerable<int>>.Filter.ElemMatch("{}", Builders<int>.Filter.Eq("{}",5)); // empty result set
var subFilter =
Builders<IEnumerable<int>>.Filter.ElemMatch(string.Empty,
Builders<int>.Filter.Eq(string.Empty, 5)); // Empty result set
var subFilter = Builders<IEnumerable<int>>.Filter.AnyEq(x => x,5); // ArgumentNullException
var subFilter = Builders<IEnumerable<int>>.Filter.AnyEq("{}",5); // Empty set
Thanks,
torni,