Problem polega na tym, że tablica poddokumentów nie jest kolekcją, nie można na niej sortować ani robić na niej czegoś innego. Ale jeśli masz dostęp do dowolnego interfejsu językowego, takiego jak JavaScript, albo jest to możliwe. Wystarczy wydobyć listę poddokumentów, posortować je według wysokości, zapamiętać pierwszy, a następnie uruchomić polecenie, aby wyciągnąć go z tablicy na podstawie jego nazwy i wysokości. Można to zrobić na przykład za pomocą tego kodu JavaScript bezpośrednio w MongoDB powłoka:
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);
})
Podejrzewam, że rozwiązanie nie jest najbardziej eleganckie, ale i tak działa.