成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁技術(shù)文章
文章詳情頁

.NET Core利用BsonDocumentProjectionDefinition和Lookup進行 join 關(guān)聯(lián)查詢(推薦)

瀏覽:219日期:2022-06-09 10:56:05
目錄
  • 前序
  • 1. 準(zhǔn)備實體模型
  • 2 .前置連接Mongo代碼
  • 3. 構(gòu)建BsonDocumentProjectionDefinition
  • 4.利用 Lookup 進行關(guān)聯(lián)

前序

前段時間由于項目需要用到MongoDB,但是MongoDB不建議Collection join 查詢,網(wǎng)上很多例子查詢都是基于linq 進行關(guān)聯(lián)查詢。但是在stackoverflow找到一個例子,程序員的朋友們請善于利用google搜索。主要介紹一個查詢角色的所有用戶的例子。MongoDB創(chuàng)建Collection 和準(zhǔn)備數(shù)據(jù),請自行處理。

1. 準(zhǔn)備實體模型

/// <summary>
    /// 用戶實體(Collection)
    /// </summary>
    public class User
    {
public Guid UserId { get; set; }

public string UserName { get; set; }

public string Password { get; set; }

public bool IsDelete { get; set; }

public DateTime CreateTime { get; set; }

public Guid RoleId { get; set; }
    }
    /// <summary>
    /// 角色實體(Collection)
    /// </summary>
    public class Role
    {
public Guid RoleId { get; set; }

public string RoleName { get; set; }

public DateTime CreateTime { get; set; }
    }
    /// <summary>
    /// 構(gòu)建用戶Dto(不在Mongo創(chuàng)建Collection)
    /// </summary>
    public class UserDto
    {
public Guid UserId { get; set; }

public string UserName { get; set; }

public DateTime CreateTime { get; set; }

public Guid RoleId { get; set; }

public string RoleName { get; set; }
    }

2 .前置連接Mongo代碼

 var client = new MongoClient("xxx");
   var database = client.GetDatabase("xxx");

3. 構(gòu)建BsonDocumentProjectionDefinition

BsonDocumentProjectionDefinition<BsonDocument> projectionDefinition = new BsonDocumentProjectionDefinition<BsonDocument>(
new BsonDocument("UserId", "$UserId")
       .Add("UserName", "$UserName")
       .Add("CreateTime", "$CreateTime")
       .Add("RoleId", "$RoleId")
       .Add("RoleName", new BsonDocument("$arrayElemAt", new BsonArray().Add("$Role.RoleName").Add(0)))
    );

4.利用 Lookup 進行關(guān)聯(lián)

Guid roleId = Guid.Empty;
    List<UserDto> list = database.GetCollection<BsonDocument>(typeof(User).Name)
.Aggregate()
//過濾條件
.Match(Builders<BsonDocument>.Filter.Eq("IsDelete", false))
.Match(Builders<BsonDocument>.Filter.Eq("RoleId", roleId))
//連接Role
.Lookup(typeof(Role).Name, "RoleId", "RoleId", typeof(UserDto).Name)
//查詢需要顯示的列
.Project(projectionDefinition)
.As<UserDto>().ToList();

到此這篇關(guān)于.NET Core利用BsonDocumentProjectionDefinition和Lookup進行 join 關(guān)聯(lián)查詢的文章就介紹到這了,更多相關(guān).net core  join 關(guān)聯(lián)查詢內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: ASP.NET
主站蜘蛛池模板: 国产成人精品久久亚洲高清不卡 | 一级全免费视频播放 | 日本免费三级网站 | 欧美一级在线免费观看 | 日本一级~片免费永久 | 男人的天堂视频在线 | 欧美亚洲国产一区 | 一级做a爰片欧美一区 | a国产片 | 免费看香港一级毛片 | 香蕉依依精品视频在线播放 | 午夜性激福利免费观看 | 性久久久久久久 | 午夜性a一级毛片 | 国产亚洲精品久久久久久久 | 一本色道久久99一综合 | 一区二区三区免费观看 | 亚洲国产视频在线 | 亚洲成年人免费网站 | 亚洲人成在线播放网站岛国 | 亚洲小视频网站 | 国产精品国产三级国产专 | 泰国情欲片寂寞的寡妇在线观看 | 国产欧美日韩视频免费61794 | 亚洲精品系列 | 国产在线观看免费人成小说 | 美女在线网站免费的 | 欧美白人和黑人xxxx猛交视频 | 亚洲精品国产福利 | 久久久国产精品免费 | 亚洲视频免费在线看 | 狠狠色狠狠色综合久久第一次 | 91精品国产美女福到在线不卡 | 久草com| 一级做a爱过程免费视频麻豆 | 91精选国产 | 久久久久国产一级毛片高清片 | 青青草国产一区二区三区 | 亚洲男人天堂av | 欧洲一级毛片 | 图片区偷拍区小说区 |