This can be done if you are querying for value. But what you are trying is on the key. We have to give exact match on the key.
We can use $regex to match on value and not on the key.
Let us have a collection
db.collection.find();
{ "_id" : ObjectId("583eed6c911c8e111fb99bf4"), "name" : "a.aa.aaa" }
{ "_id" : ObjectId("583eed72911c8e111fb99bf5"), "name" : "a.bb.aaa" }
{ "_id" : ObjectId("583eed77911c8e111fb99bf6"), "name" : "a.bb.bbb" }
{ "_id" : ObjectId("583eed7b911c8e111fb99bf7"), "name" : "a.cc.bbb" }
{ "_id" : ObjectId("583eed7f911c8e111fb99bf8"), "name" : "a.cc.aaa" }
{ "_id" : ObjectId("583eed84911c8e111fb99bf9"), "name" : "a.cc.bbb" }
{ "_id" : ObjectId("583eed88911c8e111fb99bfa"), "name" : "a.cc.ccc" }
{ "_id" : ObjectId("583eed9a911c8e111fb99bfb"), "name" : "a.aa.ccc" }
{ "_id" : ObjectId("583eeda4911c8e111fb99bfc"), "name" : "a.aa.bbb" }
{ "_id" : ObjectId("583eedfd911c8e111fb99bfd"), "name" : "a.aa.abc" }
{ "_id" : ObjectId("583eee03911c8e111fb99bfe"), "name" : "a.bb.abc" }
{ "_id" : ObjectId("583eee06911c8e111fb99bff"), "name" : "a.cc.abc" }
Then the query using $regex is like
db.collection.find({name:{$regex: /a.*.aa*/}});
and the result of this query
{ "_id" : ObjectId("583eed6c911c8e111fb99bf4"), "name" : "a.aa.aaa" }
{ "_id" : ObjectId("583eed72911c8e111fb99bf5"), "name" : "a.bb.aaa" }
{ "_id" : ObjectId("583eed7f911c8e111fb99bf8"), "name" : "a.cc.aaa" }
{ "_id" : ObjectId("583eed9a911c8e111fb99bfb"), "name" : "a.aa.ccc" }
{ "_id" : ObjectId("583eeda4911c8e111fb99bfc"), "name" : "a.aa.bbb" }
{ "_id" : ObjectId("583eedfd911c8e111fb99bfd"), "name" : "a.aa.abc" }
{ "_id" : ObjectId("583eee03911c8e111fb99bfe"), "name" : "a.bb.abc" }
{ "_id" : ObjectId("583eee06911c8e111fb99bff"), "name" : "a.cc.abc" }
Pls refer: Mongodb - regex match of keys for subobjects
Hope it Helps!