亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

mongodb是nosql數(shù)據(jù)庫嗎 7 NoSQL | MongoDB入門實戰(zhàn)教程( 二 )


假設(shè)我們的實體定義如下:
public class Contact{[BsonId][BsonRepresentation(BsonType.ObjectId)]public string Id { get; set; }public string Name { get; set; }public string Company { get; set; }public string Title { get; set; }public int[] GroupIds { get; set; }public IList<Group> Groups { get; set; }}public class Group{[BsonId][BsonRepresentation(BsonType.ObjectId)]public string Id { get; set; }public int GroupId { get; set; }public string Name { get; set; }}那么 , 可以通過Driver實現(xiàn)以下操作:
public async Task<IList<Contact>> GetAsync(){return await _contacts.Aggregate().Lookup<Contact, Group, Contact>(_groups,local => local.GroupIds,from => from.GroupId,result => result.Groups).ToListAsync();}完整示例github地址:https://github.com/EdisonChou/EDT.Mongo.Sample
運行結(jié)果如下所示:

mongodb是nosql數(shù)據(jù)庫嗎 7 NoSQL | MongoDB入門實戰(zhàn)教程

文章插圖
什么時候使用引用模式
綜上所述 , 當(dāng)滿足以下條件之一時 , 你可以開始考慮引用模式設(shè)計文檔模型:
(1)當(dāng)內(nèi)嵌后的文檔太大 , 有可能超過16MB限制的時候;
(2)內(nèi)嵌的文檔 或 數(shù)組元素 有可能會頻繁修改的時候;
(3)內(nèi)嵌數(shù)組元素 有可能會持續(xù)增長且沒有封頂?shù)臅r候;
引用模式設(shè)計的限制
引用模式也并非銀彈 , 它存在以下一些限制:
(1)MongoDB對于使用引用的集合之間沒有所謂的外鍵檢查;
(2)MongoDB使用聚合框架的$lookup來模仿關(guān)聯(lián)查詢;
(3)$lookup只支持LEFT OUTER JOIN , 且關(guān)聯(lián)目標(biāo)(from)不能是分片表;
db.Contacts.aggregate([{$lookup:{    from: "groups", // 這里的from不能是分片表......}}]);3 總結(jié)
本文簡單介紹了MongoDB的模型設(shè)計中的內(nèi)嵌模式和引用模式 , 探討了引用模式的使用、何時使用 及 使用限制 。
下一篇 , 我們會學(xué)習(xí)MongoDB的模式設(shè)計中的一些設(shè)計模式并套用這些設(shè)計模式簡化設(shè)計難度 。
參考資料
唐建法 , 《MongoDB高手課》(極客時間)
郭遠(yuǎn)威 , 《MongoDB實戰(zhàn)指南》(圖書)


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: