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

Nhóm Mongodb theo trường dbref

Đã từng có một phần trong sách hướng dẫn nói rõ ràng rằng DBRef không được hỗ trợ trong khuôn khổ tổng hợp, cùng với nhiều loại BSON khác.

Đoạn văn cũ được đọc như được hiển thị trong kho lưu trữ nhóm google này tin nhắn:

Nó có thể vẫn ở đó ở đâu đó nhưng tôi dường như không thể tìm thấy nó ngay bây giờ :)

Cũng như được đề cập trong chuỗi thông báo đó là ngoài việc điều này không được hỗ trợ trong khung tổng hợp, thì tùy chọn khác của bạn (và chỉ tùy chọn thực sự để tổng hợp) là sử dụng mapReduce thay vào đó. Như một ví dụ về shell:

db.Products.mapReduce(
    function() {
        emit( this.model.$id, { "actives": [this.isActive] } );
    },
    function(key,values) {
        var result = { "actives": [] };
        values.forEach(function(value) {
            value.actives.forEach(function(active) {
                result.actives.push( active );
            });
        });
    },
    { "out": { "inline": 1 } }
)

Nó trông không đẹp vì { "_id": "", "value": { } } tùy ý cấu trúc của bản đồ Giảm kết quả, nhưng nó cho phép loại tổng hợp bạn đang tìm kiếm.

Cũng có tham chiếu đến Sự cố JIRA này: SERVER-14466 , nhưng tôi sẽ không cố gắng di chuyển nhiều trên mặt trận đó.

Vì vậy, bạn có thể sử dụng mapReduce nhưng nên tránh sử dụng DBRef và xác định một dạng thay thế của "tham chiếu thủ công" hoặc nhúng thông tin "bộ sưu tập" và "cơ sở dữ liệu" hoặc dựa vào định nghĩa bên ngoài của những thứ như vậy trong lược đồ ứng dụng của bạn, tùy thuộc vào theo nhu cầu của bạn. Miễn là bạn tuân theo các quy tắc tương tự ở đó thì bạn có thể sử dụng khung tổng hợp cho bất kỳ thứ gì có tên thuộc tính hợp lệ.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách hợp nhất dữ liệu từ hai bộ sưu tập trong MongoDB

  2. Lưu trữ luồng dữ liệu từ yêu cầu POST trong GridFS, express, mongoDB, node.js

  3. Phần tử mảng cập nhật Mongo (trình điều khiển .NET 2.0)

  4. Tại sao không nên đóng kết nối MongoDB ở bất kỳ đâu trong mã Node.js?

  5. Tôi có thể định cấu hình MongoDB thành Trong bộ nhớ không?