Vấn đề là mảng các tài liệu con không phải là một tập hợp, bạn không thể sắp xếp hoặc làm điều gì đó khác trên đó. Nhưng nếu bạn có quyền truy cập vào bất kỳ giao diện ngôn ngữ nào như JavaScript hoặc các giao diện khác thì có thể. Bạn chỉ cần trích xuất danh sách các tài liệu con, sắp xếp chúng theo chiều cao, ghi nhớ cái đầu tiên và sau đó chạy lệnh để kéo nó khỏi mảng dựa trên tên và chiều cao của nó. vỏ:
var min = 0; var name = "";
db.animals.find({ query:{"_id" : 0} }).forEach(
function(record){
var sets = record.pets;
min = sets[0].height;
sets.forEach(function(set){
if(set.height <= min)
{min=set.height;
name=set.name;}
});
print(min);
print(name);
query = {"_id": 0}
update = { "$pull" : { "pets" : { "name" : name } } };
db.animals.update(query, update);
})
Tôi nghi ngờ giải pháp này không phải là giải pháp tốt nhất nhưng dù sao thì nó vẫn hoạt động.