10
Я хотел бы знать, как удалить, например, последние 100 документов, вставленных в мою коллекцию.Mongo удалить последние документы
Как это возможно из корпуса?
Я хотел бы знать, как удалить, например, последние 100 документов, вставленных в мою коллекцию.Mongo удалить последние документы
Как это возможно из корпуса?
Вы должны быть в состоянии использовать _id
для сортировки на последнем вставлено, как указано в ответе here:
db.coll.find().sort({_id:-1}).limit(100);
Он looks like используя ограничение на стандартном Монго удалить операция не поддерживается, поэтому вы может использовать что-то вроде этого, чтобы удалить 100 документов:
for(i=0;i<100;i++) {
db.coll.findAndModify({query :{}, sort: {"_id" : -1}, remove:true})
}
Смотрите docs больше на findAndModify
.
есть некоторые проблемы с этим ответом. 1) вы предполагаете, что его значения _id монотонно возрастают. но если они равны 2), вы предлагаете запустить цикл 100 раз вместо того, чтобы просто сделать один оператор удаления. db.coll.remove ({_ id: {$ gte: <значение-100-й-id>} –
Ответ, который я указал что _id вернет самые последние элементы: «Если вы используете автоматически созданное _id-поле, у него есть дата, встроенная в него ... так что вы можете использовать его для заказа». Не будет ли это быть точным при некоторых обстоятельствах (например, когда db оштрафован)? Независимо от того, я бы с уверенностью согласился, что один звонок будет более эффективным - спасибо! – bcm360
они указывают * если * вы используете _id - но не забывайте, что люди могут предоставить свои собственные _id, которое может быть распределено по-разному, а также _id генерируется на клиенте - если у них несколько клиентов, некоторые из их часов * могут быть выключены (!) –