2013-05-23 6 views
0

Mongo에는 매우 큰 데이터베이스가 있습니다. 그것은 69,000 개 이상의 문서를 가지고 있습니다.Mongo 데이터베이스에서 알려진 수의 문서를 제거하십시오.

나는 대부분을 제거하겠다고 결정했습니다. 예를 들어 10 개의 문서 만 갖고 싶습니다.

터미널의 데이터베이스에서 여러 문서를 무작위로 (직접) 제거하려면 어떻게해야합니까?

나는 이미 작동하지 않는 db.col_name.remove().limit(20)을 시도했습니다.

+0

FWIW, 69,000 개의 문서는 "매우 큰"근처에 없습니다. 일이 느려서 당신이 이것을하고 있다면, 당신은 뭔가 잘못하고있는 것입니다. –

+0

작은 응용 프로그램을 테스트하고 있습니다. 가능할까요? 또한이 문제와 관련하여 다른 질문을 찾지 못했고 질문하는 것이 좋습니다. –

+0

무작위 란 무엇입니까? 10000 번째 문서 또는 10 개 또는 그 이상을 보관하고 싶습니까? –

답변

2

https://jira.mongodb.org/browse/SERVER-1599이 구현 될 때까지 직접 수행 할 방법이 없습니다.

해결 방법으로 다음을 수행 할 수 있습니다. 기본적으로 삭제할 _ids 묶음을 가져온 다음 실제로 추가로 .remove() 호출을 수행하여 실제로 삭제합니다.

ids_to_remove = [] 
db.col.find({},{_id:1}).limit(100).forEach(function(doc){ids_to_remove.push(doc._id)}); 
db.col.remove({_id:{$in:ids_to_remove}}) 
+0

이것은 내가 원하는 것을 수행합니다. 감사! –

관련 문제