2013-06-22 16 views

Odpowiedz

14

Powinieneś być w stanie korzystać z _id posortować na ostatni wstawiony, jak wskazano w odpowiedzi here:

db.coll.find().sort({_id:-1}).limit(100); 

To looks like użyciu limitu na standardowym Mongo usunięcia operacja nie jest obsługiwana chociaż, więc może użyć czegoś takiego, aby usunąć 100 dokumentów:

for(i=0;i<100;i++) { 
    db.coll.findAndModify({query :{}, sort: {"_id" : -1}, remove:true}) 
} 

Zobacz docs więcej na findAndModify.

+5

jest kilka problemów z tą odpowiedzią. 1) zakładasz, że jego _id wartości rosną monotonicznie. ale jeśli są 2) sugerujesz uruchamianie pętli 100 razy zamiast po prostu wykonanie jednego polecenia usunięcia db.coll.remove ({_ id: {$ gte:

+1

Odpowiedź, którą wskazałem sugeruje, że _id zwróci najnowsze elementy: "Jeśli używasz automatycznie utworzonego pola _id, ma ono wbudowaną datę ... więc możesz użyć tego do złożenia zamówienia przez". Czy w niektórych okolicznościach nie byłoby to dokładne (np. gdy db jest przesunięty)? Bez względu na to, z pewnością zgodziłbym się, że pojedyncze połączenie będzie bardziej wydajne - dzięki! – bcm360

+2

wskazują, * jeśli * używasz _id - ale nie zapominaj, że ludzie mogą dostarczać własne _id wartość, która może być dystrybuowana w różny sposób, a także _id jest generowany na kliencie - jeśli ma wielu klientów, niektóre z ich zegarów * mogą * być wyłączone (!) –

Powiązane problemy