Tôi muốn thực hiện câu lệnh SQL này trên MongoDB:Chọn biệt nhiều hơn một lĩnh vực sử dụng bản đồ MongoDB của giảm
SELECT DISTINCT book,author from library
Cho đến nay DISTINCT của MongoDB chỉ hỗ trợ một thực tế tại một thời điểm. Đối với nhiều trường, chúng ta phải sử dụng lệnh GROUP hoặc map-reduce.
Tôi có googled một cách để sử dụng lệnh GROUP:
db.library.group({
key: {book:1, author:1},
reduce: function(obj, prev) { if (!obj.hasOwnProperty("key")) {
prev.book = obj.book;
prev.author = obj.author;
}},
initial: { }
});
Tuy nhiên phương pháp này chỉ hỗ trợ lên đến 10.000 phím. Có ai biết cách sử dụng map map để giải quyết vấn đề này không?
cảm ơn rất nhiều. nó hoạt động tốt. nhưng tôi vẫn gặp khó khăn trong việc tìm kiếm hàm '{exist: 1}'. trong sự hiểu biết của tôi, nó là một định danh cho mỗi giá trị duy nhất. nhưng tôi vẫn thấy lạ. –
Thông thường giá trị phức tạp hơn và có nhiều trường. Bạn có thể đơn giản hóa điều này để chỉ phát ra giá trị 1 nhưng '{exist: 1}' tự giải thích nhiều hơn và sẽ dễ dàng hơn khi bạn muốn thêm nhiều trường vào nó sau này. –