首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

擴展 MongoDB C# Driver 的 QueryBuilder:強類型查詢構建器

     編輯:關於C++

背景

為避免硬編碼字符串如 ClassA.MemberA.MemberB,設計了一組擴展類,支持通過 Lambda 表達式構建 MongoDB 查詢,自動解析成員路徑。

核心功能

  1. ExpToStr:將表達式樹轉換為成員路徑字符串(如 m => m.MemberA.MemberB → "MemberA.MemberB")。
  2. Collection:處理集合成員,返回 QueryCollection 對象,支持鏈式調用。
  3. CollectionAs:處理繼承場景,將基類集合轉換為子類集合以訪問子類成員。

使用示例

 x.PoppedSegments)
    .Matches(p => p.AssignedNetwork.Name, bsonRegex);

// 3. 繼承轉換:基類 STPaymentTransaction -> 子類 STPaymentCompanyCredit
QueryEx<MDDelivery>.CollectionAs<STPaymentTransaction, STPaymentCompanyCredit>(x => x.Payments)
    .Matches(p => p.Company.Name, bsonRegex);

// 4. 雙層集合 + 繼承
QueryEx<MDDelivery>.Collection(x => x.Parcels)
    .CollectionMemberAs<STCustomPropertyRuntime, STNumericPropertyRuntime>(p => p.CustomProps)
    .Matches(p => p.Value, bsonRegex);

實現核心代碼


優勢

  • 編譯時檢查成員名稱,重構安全。
  • 支持巢狀集合、繼承轉換、正則匹配等複雜查詢。
  • 消除魔術字符串,提高可維護性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved