具有查找和管道查询的MongoDB聚合速度很慢

时间:2020-11-02 05:00:38

标签: mongodb mongoose mongodb-query aggregation-framework lookup

我有两个收藏夹。

1:第一个集合名为 OtherSubclinicalResult ,其结构如下:

{
    "_id" : ObjectId("5f8ebf2a320efd7cd6df7b2d"),
    "mahh" : NumberLong(2),
    "mathanhtoan" : NumberLong(0),
    "dong" : NumberLong(0),
    "cot" : NumberLong(0),
    "noidung" : "KẾT QUẢ",
    "mreadonLy" : true,
    "mforecolor" : "[0][0][0]",
    "mbackcolor" : "[255][255][255]",
    "mfont" : "[Times New Roman][11][Regular]",
    "ct" : NumberLong(10000),
    "mauketqua" : "Siêu âm 4D",
    "mcolmer" : NumberLong(6),
    "mtextalign" : NumberLong(32),
    "mketluan" : false,
    "is_deleted" : false
}

2:第二个集合名为 SubclinicalResult ,其结构如下:

{
    "_id" : ObjectId("5f8ed12a320efd7cd6e8447d"),
    "mahh" : NumberLong(177),
    "mathanhtoan" : NumberLong(3),
    "macs" : NumberLong(14),
    "makcb" : "2000000002",
    "barcode" : "010620-0002",
    "manvlam" : NumberLong(2),
    "maktvlam" : NumberLong(4),
    "daduyet" : true,
    "ngaylam" : ISODate("2020-06-01T04:03:00.000Z"),
    "ngaykhopBC" : ISODate("2020-06-01T01:27:00.000Z"),
    "ngaytraKQ" : ISODate("2020-06-01T04:03:00.000Z"),
    "ailam" : "4/*/01/06/2020/*/11:04/*/xetnghiem/*/Xét nghiệm/*/ADMIN/*/ | 192.168.1.11 | ",
    "aikhop" : "4/*/01/06/2020/*/08:28/*/xetnghiem/*/Xét nghiệm/*/ADMIN/*/ | 192.168.1.11 | ",
    "ketluan" : "1",
    "duyetkq" : false,
    "ct" : NumberLong(2006),
    "ngoaigio" : false,
    "mathanhtoanct" : NumberLong(4),
    "dain" : true,
    "is_deleted" : false
}

我想在两个集合之间联接,条件是这两个表之间的“ mahh”和“ mathanhtoan”是等效的。这是我的工作。

db.OtherSubclinicalResult.aggregate([
   {
      "$match": {
         mathanhtoan: Number(2533)
      }
   },
     {
      "$lookup":
      {
         "from": "SubclinicalResult",
         "let": {
            "sCode": "$mahh", 
            "payCode": "$mathanhtoan" 
            },
         "pipeline": [ 
         {
            "$match": {
               
               "$expr": {
                  
                  "$and":
                  [
                     {"$eq": [ "$mahh","$$sCode"]},
                     {"$eq": [ "$mathanhtoan","$$payCode"]},
                  ]
               }
            }
            }
         ],  
         "as": "SubclinicalResult"
      }
   },
]).pretty();

以下是一条记录的结果。

{
    "_id" : ObjectId("5f8ec015320efd7cd6e2e8bf"),
    "mahh" : NumberLong(2),
    "mathanhtoan" : NumberLong(2533),
    "dong" : NumberLong(0),
    "cot" : NumberLong(0),
    "noidung" : "KẾT QUẢ",
    "mreadonLy" : true,
    "mforecolor" : "[0][0][0]",
    "mbackcolor" : "[255][255][255]",
    "mfont" : "[Times New Roman][11][Regular]",
    "ct" : NumberLong(2008),
    "mauketqua" : "Siêu âm 4D",
    "mtextalign" : NumberLong(16),
    "mketluan" : false,
    "is_deleted" : false,
    "SubclinicalResult" : [ 
        {
            "_id" : ObjectId("5f8ed152320efd7cd6e89214"),
            "mahh" : NumberLong(2),
            "mathanhtoan" : NumberLong(2533),
            "macs" : NumberLong(0),
            "makcb" : "2000002564",
            "InstrumentID" : "7",
            "manvlam" : NumberLong(12),
            "maktvlam" : NumberLong(5),
            "daduyet" : true,
            "ngaylam" : ISODate("2020-08-24T00:45:00.000Z"),
            "ailam" : "10/*/24/08/2020/*/07:55/*/tthai/*/Trịnh Thị Hải/*/CP28DQITQALNDK1/*/ | 192.168.1.12 | ",
            "ketluan" : "Hiện tại siêu âm  thai tương đương  35 tuần 03 ngày, chưa phát hiện dấu hiệu bất thường về hình thái ở tuổi thai này\r\nDự kiến sinh:  25 / 09  / 2020 ( Dương lịch)",
            "docketqua" : "- Tử cung: \r\n  \u001cTư thế trung gian.\r\n   Kích thước bình thường.\r\n   Âm vang cơ tử cung đồng nhất.\r\n   Niêm mạc mm\r\n   Buồng tử cung không  thấy âm vang  gì bất thường.\r\n- Phần phụ phải: Không thấy gì bất thường\r\n- Phần phụ trái: Không thấy gì bất thường\r\n- Cùng đồ sau và ổ bụng: Không có dịch.",
            "ct" : NumberLong(2008),
            "ngoaigio" : false,
            "kythuat" : "Siêu âm màu 4D ()",
            "dain" : false,
            "is_deleted" : false
        }
    ]
}

我得到的结果是180条记录,但是响应是如此缓慢(〜等于27 s)。我想优化查询以更快地获得结果。

0 个答案:

没有答案