Mongo không hỗ trợ bộ sưu tập "tạm thời".
Một điều điển hình cần làm ở đây là không thực sự ghi toàn bộ kết quả đầu ra vào một DB khác vì điều đó hoàn toàn vô nghĩa vì Elasticsearch thực hiện bộ nhớ đệm của riêng nó, vì vậy bạn không cần bất kỳ lớp nào ở trên cùng.
Ngoài ra, do mối quan tâm của IO, thông thường là một ý tưởng tồi nếu viết một tập hợp kết quả gồm 10k bản ghi cho Mongo hoặc một DB khác.
Có một yêu cầu tính năng cho những gì bạn nói đến: https://jira.mongodb.org/ duyệt / SERVER-3215 nhưng vẫn chưa có kế hoạch.
Ví dụ
Bạn có thể có một bảng kết quả.
Trong bảng này, bạn sẽ có một tài liệu giống như sau:
{keywords: ['bok', 'mongodb']}
Mỗi khi bạn tìm kiếm và cuộn qua từng mục kết quả, bạn sẽ ghi một hàng vào bảng này để điền vào trường từ khóa với các từ khóa từ kết quả tìm kiếm đó. Điều này sẽ là trên mỗi kết quả tìm kiếm trên mỗi danh sách kết quả tìm kiếm cho mỗi lần tìm kiếm. Có lẽ tốt nhất là chỉ nên truyền trực tuyến mỗi kết quả tìm kiếm tới MongoDB khi chúng xuất hiện. Tôi chưa bao giờ lập trình Python (mặc dù tôi muốn học) vì vậy hãy lấy một ví dụ trong giả:
var elastic_results = [{'elasticresult'}];
foreach(elastic_results as result){
//split down the phrases in this result and make a keywords array
db.results_collection.insert(array_formed_from_splitting_down_result); // Lets just lazy insert no need for batch or trying to shrink the amount of data to one go or whatever, lets just stream it in.
}
Vì vậy, khi bạn xem xét các kết quả của mình, về cơ bản, bạn chỉ cần chèn hàng loạt càng nhanh càng tốt để tạo ra một loại "luồng" đầu vào cho MongoDB. Nó có thể làm điều này khá tốt.
Sau đó, điều này sẽ cung cấp cho bạn một danh sách có thể chia nhỏ các từ và động từ ngôn ngữ để xử lý những thứ như MR và những thứ để tổng hợp thống kê về chúng.
Nếu không biết nhiều hơn và nhiều hơn về kịch bản của bạn, đây là câu trả lời tốt nhất của tôi.
Điều này không sử dụng khái niệm bảng tạm mà thay vào đó làm cho dữ liệu của bạn vĩnh viễn, điều này rất tốt vì bạn muốn sử dụng Mongo làm công cụ lưu trữ cho các tác vụ tiếp theo.