2013-06-22 4 views

ответ

14

Вы должны быть в состоянии использовать _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.

+5

есть некоторые проблемы с этим ответом. 1) вы предполагаете, что его значения _id монотонно возрастают. но если они равны 2), вы предлагаете запустить цикл 100 раз вместо того, чтобы просто сделать один оператор удаления. db.coll.remove ({_ id: {$ gte: <значение-100-й-id>} –

+1

Ответ, который я указал что _id вернет самые последние элементы: «Если вы используете автоматически созданное _id-поле, у него есть дата, встроенная в него ... так что вы можете использовать его для заказа». Не будет ли это быть точным при некоторых обстоятельствах (например, когда db оштрафован)? Независимо от того, я бы с уверенностью согласился, что один звонок будет более эффективным - спасибо! – bcm360

+2

они указывают * если * вы используете _id - но не забывайте, что люди могут предоставить свои собственные _id, которое может быть распределено по-разному, а также _id генерируется на клиенте - если у них несколько клиентов, некоторые из их часов * могут быть выключены (!) –