नेस्टेड दस्तावेज़ में एक कुंजी खोजने के लिए आपको दस्तावेज़ फ़ील्ड को पुनरावर्ती रूप से पुनरावृत्त करने की आवश्यकता है, आप इसे जावास्क्रिप्ट में $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);
}}
);