Asked thg 8 17, 2020 4:18 AM 96 0 2
  • 96 0 2
+1

Sort relationship với mongodb

Share
  • 96 0 2

Xin chào mọi người, mình có một vấn đề như sau, mong mọi người giải đáp giúp: 1, Mình có 2 bảng là sales quan hệ 1 N với bảng orders. 2, Làm thế nào để sort bảng sales theo số lượng bản ghi của orders có order hôm nay và trạng thái của order đó ? Cảm ơn mọi người.

2 ANSWERS


Answered thg 8 19, 2020 10:26 AM
+2

Bạn dùng aggregate function của mongodb nhé.

https://docs.mongodb.com/manual/reference/operator/aggregation-pipeline/

db.getCollection('orders').aggregate([
  {
    $lookup: {
      from: 'sales',
      localField: 'sale_id',
      foreignField: '_id',
      as: 'sale_info',
    },
  },
  { $unwind: '$sale_info' },
  {
    $group: {
      _id: '$sale_info._id',
      root: { $first: '$$ROOT' },
      count: { $sum: 1 },
    },
  },
  { $sort: { count: -1 } },
  {
    $replaceRoot: { newRoot: '$root' },
  },
]);
Share
thg 8 19, 2020 10:41 AM

@htdangkhoa thank bạn, mình thử cách khác rồi 😄

0
| Reply
Share
Answered thg 8 17, 2020 5:53 AM
-1

bạn có thể dùng relationship để lấy ra order count nó rồi orderBy cụ thể :

Sale::with('orders')
    ->selectRaw(DB::raw('count(orders) AS countOrders))
    ->orderBy('countOrders')
    ->get();
Share
Avatar morikun @thanhnguyen
thg 8 17, 2020 7:10 AM

Ủa, mongodb cũng viết đc kiểu này à bạn.

0
| Reply
Share
thg 8 17, 2020 7:36 AM

@TuanLinhChi Mongodb bạn ơi

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.