亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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

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

前序

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

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

/// <summary>
    /// 用戶實(shí)體(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>
    /// 角色實(shí)體(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 進(jìn)行關(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進(jìn)行 join 關(guān)聯(lián)查詢的文章就介紹到這了,更多相關(guān).net core  join 關(guān)聯(lián)查詢內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: ASP.NET
主站蜘蛛池模板: 一级免费大片 | 国产久热香蕉在线观看 | 亚洲国产精品综合一区在线 | 九九啪 | 亚洲精品色一区色二区色三区 | 8888四色奇米在线观看不卡 | 福利国产精品 | 国模福利视频在线播放 | 国产二区精品视频 | 日韩视频一区二区三区 | 亚洲日本欧美综合在线一 | 亚洲国产高清视频 | 国产观看精品一区二区三区 | 成人午夜影院在线观看 | 久久久久免费精品国产 | 黄色毛片一级 | 未成人做爰视频www 未成人禁止视频高清在线观看 | 精品久久久久久国产91 | 青青草这里只有精品 | 国产午夜亚洲精品久久999 | 91免费视 | 东京一区二区三区高清视频 | 成人亚洲国产综合精品91 | 亚洲国产精品影院 | 亚洲国产系列久久精品99人人 | 色偷偷亚洲女人天堂观看欧 | 亚洲一区二区三区福利在线 | 香蕉视频在线免费看 | 日本免费人成网ww555在线 | 狠狠插影院 | 成人yyyy | 国产1区2区3区在线观看 | 欧美一级做一级做片性十三 | 外国黄色网 | 久久久久久免费精品视频 | 一级欧美激情毛片 | 亚洲视频一区在线 | 又黄又爽又猛午夜性色播在线播放 | 色一伦一情一区二区三区 | 成人黄色毛片 | 女人被男人狂躁免费视频 |