MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB - sao chép bộ sưu tập trong java mà không cần lặp lại tất cả các mục

Trong MongoDB 2.6, toán tử tổng hợp $ out đã được thêm vào để ghi kết quả của tổng hợp vào một tập hợp. Điều này cung cấp một cách đơn giản để thực hiện sao chép phía máy chủ của tất cả các mục trong một bộ sưu tập sang một bộ sưu tập khác trong cùng một cơ sở dữ liệu bằng cách sử dụng trình điều khiển Java (tôi đã sử dụng trình điều khiển Java phiên bản 2.12.0):

// set up pipeline
List<DBObject> ops = new ArrayList<DBObject>();
ops.add(new BasicDBObject("$out", "target")); // writes to collection "target"

// run it
MongoClient client = new MongoClient("host");
DBCollection source = client.getDB("db").getCollection("source")
source.aggregate(ops);

Phiên bản một lớp lót:

source.aggregate(Arrays.asList((DBObject)new BasicDBObject("$out", "target")));

Theo tài liệu, đối với tập dữ liệu lớn (> 100MB), bạn có thể muốn sử dụng tùy chọn allowDiskUse (Giới hạn bộ nhớ tổng hợp), mặc dù tôi đã không gặp phải giới hạn đó khi tôi chạy nó trên bộ sưu tập> 2GB, vì vậy nó có thể không áp dụng tới đường ống cụ thể này, ít nhất là trong 2.6.0.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để in ra hơn 20 mục (tài liệu) trong trình bao của MongoDB?

  2. MongoDB:cập nhật mọi tài liệu trên một trường

  3. MongoDB SSL với chứng chỉ tự ký trong Node.js

  4. Nodejs / Express - Khởi chạy ứng dụng của tôi:express.createServer () không được dùng nữa

  5. Mongoose chỉ mục duy nhất trên subocument