De 2.4-release van MongoDB biedt hier een andere optie, namelijk om het arrayveld in gesorteerde volgorde te houden terwijl u het bijwerkt met behulp van de $sort
modificatie.
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [{timestamp: 456, x: 1}, {timestamp: 123, x: 2}, ...],
$sort: {timestamp: 1}
}
}
});
Dit resulteert in de elementen van de myarray
veld van het bijgewerkte document dat moet worden opgeslagen, gesorteerd op oplopend timestamp
.
Als u alleen de bestaande elementen op hun plaats wilt sorteren zonder nieuwe toe te voegen, gebruikt u $each: []
:
db.collection.update({_id: document_id}, {
$push: {
myarray: {
$each: [],
$sort: {timestamp: 1}
}
}
});