Bem, honestamente, escrever consultas em C# é um pouco complicado, mas você sempre pode pregar uma peça.
var bsonQuery = "{'Details.a':{$elemMatch:{$elemMatch:{DeviceName : /.*Name0.*/}}}}";
var filter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(bsonQuery);
var result = col.FindSync (filter).ToList();
Estou desserializando consultas simples do MongoDB em um BsonDocument que, em troca, estou passando para FindAsync como filtro.
No final, você terá o resultado desejado em resultado variável.
Nota:estou assumindo que a conexão do MongoDB foi estabelecida e a variávelcol
contém referência à coleção do MongoDB.
EDIT:Por favor, veja o seguinte link https://groups.google.com/forum/#!topic/mongodb-csharp/0dcoVlbFR2A. Agora está confirmado que o driver C# não suporta filtros sem nome, portanto, escrever acima da consulta usando
Buidlers<BsonDocument>.Filter
no momento não é suportado. Para encurtar a história, você fica com apenas uma opção e é consultar como mencionei acima na minha solução.