2010-12-14 12 views
9

Có thể thực hiện cập nhật hàng loạt/upsert (không chèn) trong MongoDB không?Cập nhật hàng loạt/upsert trong MongoDB?

Nếu có, vui lòng chỉ cho tôi mọi tài liệu liên quan đến điều này?

Cảm ơn

+0

Đây là không thể nào được nêu: xem https://jira.mongodb.org/browse/SERVER-4004 –

Trả lời

4

Bạn có thể sử dụng chương trình dòng lệnh mongoimport nó phải ở trong bin dir MongoDB của bạn ...

Có hai lựa chọn bạn sẽ muốn xem xét sử dụng upsert ...

chèn --upsert hoặc đối tượng cập nhật đã tồn tại
--upsertFields arg comm các trường được phân tách cho truy vấn một phần của số dư . Bạn nên chắc chắn này được lập chỉ mục

Thông tin thêm ở đây: http://www.mongodb.org/display/DOCS/Import+Export+Tools

Hoặc chỉ cần làm ...

$ mongoimport --help 
+0

Lưu ý: hiện tại --upsert không được ghi lại trong tài liệu trực tuyến (chúng cần phải được cập nhật) ... nhưng bạn sẽ thấy nó từ dòng lệnh --help. –

1

Cập nhật hàng loạt cũng có thể được thực hiện theo lô như được tìm thấy trong tài liệu:

MongoDB Bulk Methods

Tôi sử dụng chúng để nhập tệp CSV mà tôi cần phải massage một chút trước khi nhập dữ liệu. Nó khá chậm khi xử lý các bản cập nhật, nhưng nó đã cập nhật tài liệu 50K của tôi trong khoảng 83 giây, chậm hơn rất nhiều so với lệnh mongoimport.

1

mongo có thể thực thi .js tệp. bạn có thể đẩy tất cả các bạn cập nhật lệnh trong tệp js.

t.js

db.record.update({md5:"a35f10a8339ab678612d1f86be08b81a"},{$set:{algres:[]}},false,true); 
db.record.update({md5:"a35f10a8339ab678612d1f86be08b81b"},{$set:{algres:[]}},false,true); 

sau đó, mongo 127.0.0.1/test t.js