У меня есть документ со структурой, аналогичной этой
{
"brand": "BMW",
"models": ["320","545"]
}
модели должно быть уникальным, и я использую следующий запрос при добавлении новых элементов,
db.cars.update(
{brand:'BMW'},
{
$addToSet: {
models: '750'
}
},
{upsert:true}
);
Это дало бы
{
"brand": "BMW",
"models": ["320","545","750"]
}
Вопрос:
Как можно ограничить общее количество моделей товаров? Скажем, я хочу сохранить только последние 3 добавленные модели. Так что, если я вставляю новую модель «135», я бы в конечном итоге с
{
"brand": "BMW",
"models": ["545","750","135"]
}
Я прочитал о модификатором $slice
однако, как представляется, будет доступна только при использовании $push
и не $addToSet
Благодарю вас за ответ, я использовал монго только пару дней и думал, что что-то подобное будет тривиально. Из ссылок, которые я собираю, кажется, что существует определенное различие между массивами и множествами, о которых я не знал. – lostsource
[SERVER-8512: поддержка $ slice/sort в $ addToSet] (https://jira.mongodb.org/browse/SERVER-8512) «запрос», который вы упоминаете, уже закрыт, так как «не будет исправляться» так определенно не задерживайте это дыхание ;-). Наборы в настоящее время реализованы как массивы, но не имеет смысла смешивать модификатор '$ addToSet' с механикой массива' $ slice'. Наборы следует считать неупорядоченными. – Stennie