ネストされたドキュメントのキーを検索するには、ドキュメントフィールドを再帰的に繰り返す必要があります。これは、JavaScriptで $ whereを使用して行うことができます。 MongoDBのメソッド以下のクエリは、ドキュメントとそのサブドキュメントにキー名が存在するかどうかを検索します。
私はあなたが与えた例でこれをチェックしました、そしてそれは完全にうまく働いています。
db.getCollection('test').find({ $where: function () {
var search_key = "lev3_field2";
function check_key(document) {
return Object.keys(document).some(function(key) {
if ( typeof(document[key]) == "object" ) {
if ( key == search_key ) {
return true;
} else {
return check_key(document[key]);
}
} else {
return ( key == search_key );
}
});
}
return check_key(this);
}}
);