2010-07-09 31 views
5

Tôi muốn biết liệu có thể "nhóm theo" kết quả của tôi với MongoDB/Php hay không.Cách "Nhóm theo" với MongoDB

Đây là mã tôi đang sử dụng để hiển thị hàng của tôi:

$count = $col->find(array('order_id' => array('$gt' => '0')))->count(); 

tôi cần phải nhóm chúng bởi order_id.

Rõ ràng, chúng ta không thể làm một count() trên group() như find()

CÔNG TRÌNH: $countfind = $col->find()->count();

KHÔNG LÀM VIỆC: $countgroup = $col->group($keys)->count();

tôi cần phải đếm groupby này xin vui lòng.

Cảm ơn sự giúp đỡ của bạn.

Trả lời

0

Có một số tài liệu chi tiết về lệnh Nhóm on their website.

Có một số ví dụ về Nhóm bằng cách sử dụng PHP libarary here.

Nếu tập dữ liệu của bạn thực sự lớn, bạn có thể cần phải xem xét việc chạy bản đồ để giảm "nhóm trước" dữ liệu này.

+0

Cảm ơn bạn, tôi sẽ thử nó – Steffi

2

Đôi khi bạn có thể muốn nhận được một mảng các giá trị khác biệt trong một bộ sưu tập. Bạn có thể thực hiện bằng này các phương pháp khác nhau():

$ages = $dm->createQueryBuilder('User') 
->distinct('age') 
->getQuery() 
->execute(); 

http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/query-builder-api.html

+0

Vấn đề là bạn không thể sử dụng -> giới hạn() khi sử dụng riêng biệt() –

0

câu trả lời mới sử dụng Mongo hợp khuôn khổ

Sau câu hỏi này đã được hỏi và trả lời, 10gen phát hành MongoDB phiên bản 2.2 với một khuôn khổ hợp . Vì vậy, cách tốt nhất để thực hiện theo nhóm là với $group operator. Trong PHP, hãy sử dụng MongoCollection::aggregate.

FYI, 10gen cũng có một tiện ích đánh dấu trang có giá trị SQL to Mongo Aggregation conversion chart. Nó có các ví dụ về tất cả các truy vấn SQL phổ biến sử dụng tập hợp SQL và cách dịch chúng thành Mongo.