使用MongoDB C API的一些编码模式

在2019年2月的《msdn杂志》上(使用其用于MongoDB的API探索Azure Cosmos DB的多模型功能)“我的数据点”专栏探讨了使用Azure Cosmos DB的MongoDB模型MongocSharpDriver.我首先处理MongoDB的本地实例,然后处理Azure实例。但是柱子有点长,所以我剪了一些多余的部分。所以我把它们放在这里,并从文章链接到这个博客文章。

在本文中,我使用imongocollection对象查询数据并将其存储到数据库中。必须为要序列化和反序列化的集合对象指定类型。在这篇文章中,我把收藏打给我的班级,例如,收藏 .也可以将集合一般地键入bsondocument。这里有一些关于这个的信息和一些代码。

将集合键入bsondocument

映射的另一个路径是使用不依赖于特定类型的bsondocument类型的集合对象。这将允许您拥有更多的通用方法。但这也意味着手动序列化和反序列化对象,这很容易使用TobsonDocument进行序列化:

var coll=db.getcollection(变量coll=db.getcollection)
         
          (“船舶”);coll.insertone(ship.tobsondocument());
         

鉴于这些文件有鉴别器,然后,您可以在查询中指定一个类型来检索特定类型,尽管,默认情况下,层次结构无法解释。本文引用了有关C_API多态性的文档。以下是链接.检查了解如何更详细地正确实现多态性。以下代码将仅在与配置的识别器匹配的情况下收回文档,这些识别器用于船载和退役船载到DSHIPS:

var coll=db.getcollection(变量coll=db.getcollection)
         
          (“船舶”);var ships=coll.asqueryable().oftype
          
           ()var dships=coll.asqueryable().oftype
           
            ()
           
          
         

封装MongoClient,数据库和集合

重复指定类型化集合实例,正如我在文章demos中所做的,会成为拖累。你可以提前安排他们,例如,在充当与数据库交互的上下文的类中,如图所示:

public class expansecontext public imongodatabase expansedb get;私人集合;}公共imongocollection
         
          船舶{;私人集合;}公共imongocollection
          
           字符get;private set;public expansecontext()expansedb=new mongoclient().getdatabase(“expansedatabase”);船舶=expansedb.getCollection
           
            (“船舶”);字符=expansedb.getCollection
            
             (以下简称“船舶”);
            
           
          
         

用于插入文档的重构代码可读性更高:

private static void insertviacontext()var context=new expansecontext();var ship=新船name=“Agatha King”};context.ships.insertone(船舶);}

报名参加我的时事通讯所以你不要错过我的会议和多元化课程公告!

一个想法”使用MongoDB C API的一些编码模式

留下答复

您的电子邮件地址将不会发布。已标记必需字段*

此网站使用Akismet来减少垃圾邮件。了解如何处理评论数据.