Um einen Schlüssel in einem verschachtelten Dokument zu suchen, müssen Sie die Dokumentenfelder rekursiv durchlaufen, Sie können dies in JavaScript mit Hilfe von $where tun Methode in MongoDBDie folgende Abfrage sucht, ob ein Schlüsselname in einem Dokument und seinen Unterdokumenten existiert.
Ich habe dies anhand des von Ihnen angegebenen Beispiels überprüft und es funktioniert einwandfrei.
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);
}}
);