Để tìm kiếm khóa trong tài liệu lồng nhau, bạn cần lặp lại đệ quy các trường tài liệu, bạn có thể thực hiện việc này trong JavaScript với sự trợ giúp của $ where trong MongoDBT Truy vấn dưới đây sẽ tìm kiếm xem tên khóa có tồn tại trong tài liệu và các tài liệu con của nó hay không.
Tôi đã kiểm tra điều này với ví dụ bạn đưa ra và nó đang hoạt động hoàn toàn tốt.
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);
}}
);