Yêu cầu thg 8 17, 2020 4:18 SA 115 0 2
  • 115 0 2
+1

Sort relationship với mongodb

Chia sẻ
  • 115 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 CÂU TRẢ LỜI


Đã trả lời thg 8 19, 2020 10:26 SA
+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' },
  },
]);
Chia sẻ
thg 8 19, 2020 10:41 SA

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

Đã trả lời thg 8 17, 2020 5:53 SA
-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();
Chia sẻ
Avatar morikun @thanhnguyen
thg 8 17, 2020 7:10 SA

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

thg 8 17, 2020 7:36 SA

@TuanLinhChi Mongodb bạn ơi

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí