2013-05-13 24 views
6

là nó có thể? Tôi có bộ sưu tập MongoDB được tạo tự động tại một thời điểm nhất định mà tôi cần phải loại bỏ. Tôi biết các mẫu tên bộ sưu tập của họ và chúng quá nhiều, vì vậy thả chúng bằng tay không phải là một lựa chọn. Tất cả các ví dụ tôi đã có một cái nhìn tại bằng cách sử dụng regex được liên quan đến các truy vấn nhưng không phải với các lệnh cơ sở dữ liệu. Tôi biết tôi có thể lặp qua tất cả các bộ sưu tập và lọc theo tên của họ Tôi có thể làm cho nó hoạt động nhưng tôi đang tìm một lệnh tiện dụng và đơn giản hơn (tôi muốn sử dụng nó trực tiếp trong trình bao), nếu có thể :)Thu thập bộ sưu tập MongoDB bằng cách sử dụng regex

Bất kỳ đề xuất?

Cảm ơn bạn!

+1

kiểm tra sau đây: http://stackoverflow.com/questions/11206890/how-to-delete-lots-of-mongodb-collections-at-once – jmingov

+0

Khi bạn tự động tạo và tự động thả rất nhiều các bộ sưu tập bạn có thể làm điều gì sai. – Philipp

+0

@Philipp nó là một trường hợp sử dụng khá cụ thể :) – jarandaf

Trả lời

12

Bạn có thể làm điều đó bằng MongoDB console:

regExp = /test/; 
db.getCollectionNames().filter(function(name){ 
    return name.match(regExp) 
}).forEach(function(name){ 
    db.getCollection(name).drop() 
}); 

Bạn có thể sử dụng bất kỳ regexp để phù hợp với tên bộ sưu tập của bạn.

+0

Bạn nói đúng, có vẻ là phương pháp làm việc duy nhất (tôi muốn tránh nó). Nếu không có giải pháp nào khác có thể được cung cấp sớm, tôi sẽ chấp nhận nó như là một câu trả lời. Cảm ơn vì đã dành thời gian cho tôi! – jarandaf

4
db.getCollectionNames().forEach(function(c) { 
    if(c.match("^system.indexes")) { 
     db.getCollection(c).drop(); 
    } 
    }); 
Các vấn đề liên quan