Om een sleutel in een genest document te zoeken, moet u de documentvelden recursief herhalen, u kunt dit in JavaScript doen met behulp van $where methode in MongoDBDe onderstaande zoekopdracht zoekt of er een sleutelnaam bestaat in een document en zijn subdocumenten.
Ik heb dit gecontroleerd met het voorbeeld dat je hebt gegeven, en het werkt prima.
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);
}}
);