Yêu cầu thg 12 20, 2021 7:58 SA 136 1 1
  • 136 1 1
+1

Mysql convert Mongodb

Chia sẻ
  • 136 1 1

Mình có câu truy vấn mysql như này giờ muốn chuyển sang mongoDB thì làm như nào ạ. Rất mong được giúp đỡ .

1 CÂU TRẢ LỜI


Đã trả lời thg 12 21, 2021 7:30 SA
Đã được chấp nhận
+2

Bạn dùng thử aggregate operator xem sao nhé. Câu truy vấn với aggregate sẽ kiểu như này:

db.TableA.aggregate([
  {
    "$lookup": {
      "from": "TableB",
      "localField": "_id",
      "foreignField": "id_a",
      "as": "dataFromB",
      "pipeline": [
        {
          "$match": {
            "ac": 1
          }
        }
      ]
    }
  },
  {
    "$lookup": {
      "from": "TableC",
      "localField": "_id",
      "foreignField": "id_a",
      "as": "dataFromC",
      "pipeline": [
        {
          "$match": {
            "ac": 2
          }
        }
      ]
    }
  },
  {
    "$match": {
      "level": 1
    }
  },
  {
    $addFields: {
      totalB: {
        $size: "$dataFromB"
      },
      totalC: {
        $size: "$dataFromC"
      }
    }
  },
  {
    $project: {
      dataFromB: 0,
      dataFromC: 0
    }
  }
])

Output:

[
  {
    "_id": 1,
    "level": 1,
    "totalB": 2,
    "totalC": 1
  },
  {
    "_id": 2,
    "level": 1,
    "totalB": 0,
    "totalC": 1
  }
]

Demo: https://mongoplayground.net/p/DPmpLuHtU2r

Chắc là có nhiều cách truy vấn khác nữa nhưng bạn có thể thử cách này của mình xem sao.

Chia sẻ
thg 12 22, 2021 2:58 SA

Cách này dữ liệu bảng con lớn trả về kết quả hơi chậm ạ

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í