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

Cách chọn các tài liệu con với MongoDB

Đến bữa tiệc hơi muộn, nhưng hy vọng sẽ giúp ích cho những người đang tìm kiếm giải pháp. Tôi đã tìm ra cách để thực hiện việc này bằng cách sử dụng khung tổng hợp và kết hợp $ project và $ thư giãn với $ match bằng cách xâu chuỗi chúng lại với nhau. Tôi đã thực hiện nó bằng PHP nhưng bạn nên hiểu ý chính:

    $ops = array(
        array('$match' => array(
                'collectionColumn' => 'value',
            )
        ),
        array('$project' => array(
                'collection.subcollection' => 1
            )
        ),
        array('$unwind' => '$subCollection'),
        array('$match' => array(
                subCollection.subColumn => 'subColumnValue'
            )
        )
    );

Đối sánh đầu tiên và dự án chỉ được sử dụng để lọc ra để làm cho nó nhanh hơn, sau đó thư giãn trên bộ sưu tập con sẽ tách ra từng mục của bộ sưu tập con theo từng mục mà sau đó có thể được lọc bằng cách sử dụng kết quả phù hợp cuối cùng.

Hy vọng điều đó sẽ hữu ích.

CẬP NHẬT (từ Ryan Wheale):

Sau đó, bạn có thể $group dữ liệu trở lại cấu trúc ban đầu của nó. Nó giống như có một $elemMatch trả về nhiều tài liệu con:

array('$group' => array(
        '_id' => '$_id',
        'subcollection' => array(
            '$push' => '$subcollection'
        )
    )
);

Tôi đã dịch cái này từ Node sang PHP, vì vậy tôi chưa thử nghiệm bằng PHP. Nếu ai muốn có phiên bản Node, hãy để lại bình luận bên dưới và tôi sẽ bắt buộc.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose giới hạn / bù đắp và truy vấn đếm

  2. Sửa đổi thứ tự hiển thị các thuộc tính trong MongoDB

  3. Sao chép một bộ sưu tập trong MongoDB

  4. Tìm theo id với mgo

  5. DBaaS lưu trữ MongoDB đầu tiên để hỗ trợ chính phủ Azure cho khu vực công