2013-06-22 6 views

答えて

14

答えhereに概説されているようあなたは、最後に挿入された上でソートする_idを使用することができるはずです:標準Mongoの削除操作に制限を使用して

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}) 
} 

findAndModifyの詳細についてはdocsを参照してください。

+5

この回答にはいくつか問題があります。 1)自分の_id値が単調に増加していると仮定しています。しかし、2つの場合は、単一のremove文を実行する代わりにループを100回実行することをお勧めします。db.coll.remove({_ id:{$ gte:} –

+1

私が指摘した答え_idが最新のアイテムを返すことを示唆しています: "自動作成された_idフィールドを使用すると、日付が埋め込まれていますので、それを使って注文できます。"例えば、dbがシャードされているとき)? にもかかわらず、単一の呼び出しがより効率的であると確信しています - ありがとう! – bcm360

+2

あなたが_idを使用する場合、彼らは指摘する*しかし、人々が自分自身を提供できることを忘れないでください_idの値は異なって配布されるかもしれませんし、_idもクライアント上に生成されます - もしそれらが複数のクライアントを持っているなら、時計のいくつかは*オフかもしれません! –

関連する問題