Bạn cần bắt đầu với $ objectToArray
để đọc động các khóa của bạn. Sau đó, bạn có thể $ map
thuộc tính cùng với $ anyElementTrue
để phát hiện xem có bất kỳ trường lồng nhau nào trong thing
không chứa {"attribute1":"typeC"}
:
db.collection.aggregate([
{
$match: {
$expr: {
$anyElementTrue: {
$map: {
input: { $objectToArray: "$thing" },
in: { $eq: [ "$$this.v.attribute1", "typeC" ] }
}
}
}
}
}
])