欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2022年10月31日 11:22:23   作者:Code的那些事  
這篇文章主要介紹了.NET?Core利用BsonDocumentProjectionDefinition和Lookup進(jìn)行join關(guān)聯(lián)查詢,這里主要介紹一下查詢角色的所有用戶的例子,文章結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下

前序

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

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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • asp.net(C#)實(shí)現(xiàn)功能強(qiáng)大的時(shí)間日期處理類完整實(shí)例

    asp.net(C#)實(shí)現(xiàn)功能強(qiáng)大的時(shí)間日期處理類完整實(shí)例

    這篇文章主要介紹了asp.net(C#)實(shí)現(xiàn)功能強(qiáng)大的時(shí)間日期處理類,封裝了針對(duì)日期與時(shí)間的各種常用的判斷與計(jì)算功能,非常方便實(shí)用,需要的朋友可以參考下
    2016-06-06
  • asp.net導(dǎo)出Excel顯示中文亂碼的解決方法

    asp.net導(dǎo)出Excel顯示中文亂碼的解決方法

    asp.net導(dǎo)出Excel顯示中文亂碼的解決方法,需要的朋友可以參考一下
    2013-03-03
  • ASP.NET MVC異常過濾器用法

    ASP.NET MVC異常過濾器用法

    本文詳細(xì)講解了ASP.NET MVC異常過濾器的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Asp.net發(fā)送郵件的兩種方法小結(jié)

    Asp.net發(fā)送郵件的兩種方法小結(jié)

    這幾天看了一下Asp.net發(fā)送郵件方面的東西,記得之前的IIS6上有SMTP服務(wù)器,可以直接利用這個(gè)進(jìn)行郵件發(fā)送,現(xiàn)在的開發(fā)環(huán)境是Windows 7,找了半天沒有找到,到網(wǎng)絡(luò)上查了才知道原來windows 7和Vista都將SMTP服務(wù)器去掉了,現(xiàn)在將兩種方法總結(jié)一下。
    2010-06-06
  • c# indexof 用法深入理解

    c# indexof 用法深入理解

    在開發(fā)過程中經(jīng)常會(huì)使用到c# indexof 查找字串中指定字符或字串首次出現(xiàn)的位置,返首索引值,本文將詳細(xì)介紹,需要的朋友可以參考下
    2012-11-11
  • ASP.NET?Core構(gòu)建OData查詢Restful?API

    ASP.NET?Core構(gòu)建OData查詢Restful?API

    這篇文章主要為大家介紹了ASP.NET?Core建構(gòu)OData實(shí)體模型實(shí)現(xiàn)Restful?API查詢,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • ASP.NET?MVC中的路由原理與用法

    ASP.NET?MVC中的路由原理與用法

    本文詳細(xì)講解了ASP.NET?MVC中的路由原理與用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • asp.net下文件上傳和文件刪除的代碼

    asp.net下文件上傳和文件刪除的代碼

    asp.net下文件上傳和文件刪除的代碼...
    2007-09-09
  • Aspose.Cells 讀取受保護(hù)有密碼的Excel文件

    Aspose.Cells 讀取受保護(hù)有密碼的Excel文件

    這篇文章主要介紹了Aspose.Cells 讀取受保護(hù)有密碼的Excel文件,簡(jiǎn)單實(shí)用,需要的朋友可以參考下。
    2016-06-06
  • asp.net根據(jù)日期算出天數(shù)的小例子

    asp.net根據(jù)日期算出天數(shù)的小例子

    asp.net根據(jù)日期算出天數(shù)的小例子,需要的朋友可以參考一下
    2013-03-03

最新評(píng)論