The following:
"PHONE" : {
"WORK" : "18630283895",
"HOME" : "188837283"
},
Is the wrong approach. As you invariably will have further types of phone numbers, you have ended up with a "key that is actually a value". This makes it difficult to query (and index). The better approach to this is:
"PHONE" : [
{ type: "WORK", number: "18630283895" },
{ type: "HOME", number: "188837283" },
],
Then you can very easily index it with:
db.collection.ensureIndex( { "PHONE.number": 1 } );
And query for numbers with:
db.collection.find( { "PHONE.number" : "18630283895" } );