一彬 發表於 2019-7-20 11:42:00

快速掌握mongoDB(四)—— C#驱动MongoDB用法演示

<p>  前边我们已经使用mongo shell进行增删查改和聚合操作,这一篇简单介绍如何使用C#驱动MongoDB。C#驱动MongoDB的本质是将C#的操作代码转换为mongo shell,驱动的API也比较简单明了,方法名和js shell的方法名基本都保持一致,熟悉mongo shell后学习MongoDB的C#驱动是十分轻松的,直接看几个栗子吧。</p>
<h2>0.准备测试数据</h2>
<p>  使用js shell添加一些测试数据,如下:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">use myDb
db.userinfos.insertMany([
   {_id:</span><span style="color: rgba(128, 0, 128, 1)">1</span>, name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">张三</span><span style="color: rgba(128, 0, 0, 1)">"</span>, age: <span style="color: rgba(128, 0, 128, 1)">23</span>,level:<span style="color: rgba(128, 0, 128, 1)">10</span>, ename: { firstname: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">san</span><span style="color: rgba(128, 0, 0, 1)">"</span>, lastname: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">zhang</span><span style="color: rgba(128, 0, 0, 1)">"</span>}, roles: [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">vip</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">gen</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> ]},
   {_id:</span><span style="color: rgba(128, 0, 128, 1)">2</span>, name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">李四</span><span style="color: rgba(128, 0, 0, 1)">"</span>, age: <span style="color: rgba(128, 0, 128, 1)">24</span>,level:<span style="color: rgba(128, 0, 128, 1)">20</span>, ename: { firstname: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">si</span><span style="color: rgba(128, 0, 0, 1)">"</span>, lastname: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(128, 0, 0, 1)">"</span>}, roles:[ <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">vip</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> ]},
   {_id:</span><span style="color: rgba(128, 0, 128, 1)">3</span>, name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">王五</span><span style="color: rgba(128, 0, 0, 1)">"</span>, age: <span style="color: rgba(128, 0, 128, 1)">25</span>,level:<span style="color: rgba(128, 0, 128, 1)">30</span>, ename: { firstname: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wu</span><span style="color: rgba(128, 0, 0, 1)">"</span>, lastname: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wang</span><span style="color: rgba(128, 0, 0, 1)">"</span>}, roles: [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">gen</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">vip</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> ]},
   {_id:</span><span style="color: rgba(128, 0, 128, 1)">4</span>, name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">赵六</span><span style="color: rgba(128, 0, 0, 1)">"</span>, age: <span style="color: rgba(128, 0, 128, 1)">26</span>,level:<span style="color: rgba(128, 0, 128, 1)">40</span>, ename: { firstname: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">liu</span><span style="color: rgba(128, 0, 0, 1)">"</span>, lastname: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">zhao</span><span style="color: rgba(128, 0, 0, 1)">"</span>}, roles: [<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">gen</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">] },
   {_id:</span><span style="color: rgba(128, 0, 128, 1)">5</span>, name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">田七</span><span style="color: rgba(128, 0, 0, 1)">"</span>, age: <span style="color: rgba(128, 0, 128, 1)">27</span>, ename: { firstname: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">qi</span><span style="color: rgba(128, 0, 0, 1)">"</span>, lastname: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">tian</span><span style="color: rgba(128, 0, 0, 1)">"</span>}, address:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">北京</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)"> },
   {_id:</span><span style="color: rgba(128, 0, 128, 1)">6</span>, name: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">周八</span><span style="color: rgba(128, 0, 0, 1)">"</span>, age: <span style="color: rgba(128, 0, 128, 1)">28</span>,roles:[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">gen</span><span style="color: rgba(128, 0, 0, 1)">"</span>], address:<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">上海</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)"> }
])</span></pre>
</div>
<h2>1 添加(InsertOne,InsertMany)</h2>
<p>  首先创建一个Console应用程序,使用命令&nbsp;<span class="cnblogs_code"> Install-Package MongoDB.Driver </span>&nbsp;添加C#的驱动包,然后就可以使用C#操作MongoDB数据库了,看一个添加的栗子:</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Program
    {
      </span><span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span> Main(<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">[] args)
      {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">连接数据库</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> client = <span style="color: rgba(0, 0, 255, 1)">new</span> MongoClient(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mongodb://192.168.70.131:27017</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取database</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> mydb = client.GetDatabase(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">myDb</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取collection</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> collection = mydb.GetCollection&lt;BsonDocument&gt;(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">userinfos</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//待添加的</span><span style="color: rgba(0, 128, 0, 1)">document</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> doc = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> BsonDocument{
                { </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">_id</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 128, 1)">7</span><span style="color: rgba(0, 0, 0, 1)"> },
                { </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">吴九</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
                { </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">29</span><span style="color: rgba(0, 0, 0, 1)"> },
                { </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ename</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> BsonDocument
                  {
                        { </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">firstname</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">jiu</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> },
                        { </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">lastname</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">wu</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> }
                  }
                }
            };
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">InsertOne()添加单条docment</span>
<span style="color: rgba(0, 0, 0, 1)">            collection.InsertOne(doc);
      }
    }</span></pre>
</div>
<p>  执行完成后,查看在RoboMongo中查询,看到已经添加成功了:</p>
<p>  <img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706134053250-1005539100.png" alt=""></p>
<p>我们也可以是用&nbsp;<span class="cnblogs_code">collection.InsertMany(IEnumerable&lt;BsonDocument&gt; docs)</span>&nbsp;来批量添加docment,这里就不再演示了。</p>
<h2>2&nbsp; 查询(Find,Filter,Sort,Projection)</h2>
<h3>1.简单查询(Find、Filter)</h3>
<p>  栗子:查找name=“吴九"的记录</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">Fileter用于过滤,如查询name = 吴九的第一条记录</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">Find(filter)进行查询</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> doc = collection.Find(filter.Eq(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">吴九</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)).FirstOrDefault();
Console.WriteLine(doc);</span></pre>
</div>
<p>  查询结果如下:</p>
<p><img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706135610164-1135050805.png" alt=""></p>
<p>  如果我们想查询所有的记录,可以设置过滤器为空,代码为:&nbsp;<span class="cnblogs_code"><span style="color: rgba(0, 0, 255, 1)">var</span> docs = collection.Find(filter.Empty).ToList();</span>&nbsp;</p>
<h3>2.AND查询</h3>
<p> 栗子:查询年龄大于25且小于28的记录</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查询25&lt;age&lt;28的记录</span>
  <span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;</span>
  <span style="color: rgba(0, 0, 255, 1)">var</span> docs = collection.Find(filter.Gt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">25</span>) &amp; filter.Lt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">28</span><span style="color: rgba(0, 0, 0, 1)">)).ToList();
  docs.ForEach(d </span>=&gt; Console.WriteLine(d));</pre>
</div>
<p>  &nbsp;查询结果如下:</p>
<p>&nbsp;<img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706140143540-200856623.png" alt=""></p>
<h3>3 OR查询</h3>
<p>  栗子:查询年龄小于25或年龄大于28的记录</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查询age&lt;25或age&gt;28的记录</span>
  <span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
  </span><span style="color: rgba(0, 0, 255, 1)">var</span> docs = collection.Find(filter.Lt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">25</span>) | filter.Gt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">28</span><span style="color: rgba(0, 0, 0, 1)">)).ToList();
  docs.ForEach(d </span>=&gt; Console.WriteLine(d));</pre>
</div>
<p>  查询结果如下:</p>
<p><img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706141304804-1273946815.png" alt=""></p>
<h3>4 字段存在(Exists)</h3>
<p>  栗子:查询包含address字段的所有记录</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查询存在address字段的记录</span>
  <span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
  </span><span style="color: rgba(0, 0, 255, 1)">var</span> docs = collection.Find(filter.Exists(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">address</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)).ToList();
  docs.ForEach(d </span>=&gt; Console.WriteLine(d));</pre>
</div>
<p>  查询结果如下:</p>
<p><img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706145309268-786959320.png" alt=""></p>
<h3>4 排序(Sort)</h3>
<p>  栗子:查询年龄小于26岁的记录,并按年龄倒序排列</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查询age&lt;26的记录,按年龄倒序排列</span>
    <span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> sort = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Sort;
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> docs = collection.Find(filter.Lt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 128, 1)">26</span>))<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">过滤</span>
                         .Sort(sort.Descending(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>)).ToList();<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">按age倒序</span>
    docs.ForEach(d =&gt; Console.WriteLine(d));</pre>
</div>
<p>  查询结果如下:</p>
<p><img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706142343044-231185970.png" alt=""></p>
<h3>5 查询指定字段(Projection)</h3>
<p>  MongoDB查询会默认返回_id字段,如果要不返回_id字段可以使用Exclude("_id")将其排除。栗子:查询年龄小于26岁记录的name和age</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查询age&lt;26的记录</span>
    <span style="color: rgba(0, 0, 255, 1)">var</span> project = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Projection;
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
    </span><span style="color: rgba(0, 0, 255, 1)">var</span> docs = collection.Find(filter.Lt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">26</span>))<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">过滤</span>
                         .Project(project.Include(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>)<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">包含name</span>
                                       .Include(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>)<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">包含age</span>
                                       .Exclude(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">_id</span><span style="color: rgba(128, 0, 0, 1)">"</span>)<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">不包含_id</span>
<span style="color: rgba(0, 0, 0, 1)">                               ).ToList();
docs.ForEach(d </span>=&gt; Console.WriteLine(d))      </pre>
</div>
<p>  查询结果:</p>
<p><img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706144204439-1031358373.png" alt=""></p>
<h2>&nbsp;3 修改(UpdateOne,UpdateMany)</h2>
<h3>1 修改单条记录(UpdateOne)</h3>
<p>  修改符合过滤条件的第一条记录,栗子:将张三的年龄改成18岁</p>
<div class="cnblogs_code">
<pre>            <span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> update = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Update;
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> project = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Projection;
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将张三的年龄改成18</span>
         <strong><span style="color: rgba(255, 102, 0, 1)"> collection.UpdateOne</span>(filter.Eq(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">张三</span><span style="color: rgba(128, 0, 0, 1)">"</span>), update.Set(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">18</span><span style="color: rgba(0, 0, 0, 1)">));
            </span></strong><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查询张三的记录</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> doc = collection.Find(filter.Eq(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">张三</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
                              .Project(project.Include(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>).Include(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
                              .FirstOrDefault();
            Console.WriteLine(doc);</span></pre>
</div>
<p>  执行结果:</p>
<p><img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706151449633-242556122.png" alt=""></p>
<h3>2 修改多条记录(UpdateMany)</h3>
<p>  UpdateMany会修改所有符合过滤条件的记录,栗子:将所有年龄小于25的记录标记为young(如果没有mark字段会自动添加)</p>
<div class="cnblogs_code">
<pre>            <span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> update = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Update;
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> project = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Projection;
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将所有年龄小于25的记录标记为young(如果没有mark字段会自动添加)</span>
            UpdateResult reulst=<strong><span style="color: rgba(255, 102, 0, 1)">collection.UpdateMany</span></strong>(filter.Lt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>,<span style="color: rgba(128, 0, 128, 1)">25</span>), update.Set(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mark</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">young</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">));
            </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (reulst.IsModifiedCountAvailable)
            {
                Console.WriteLine($</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">符合条件的有{reulst.MatchedCount}条记录</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
                Console.WriteLine($</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">一共修改了{reulst.ModifiedCount}条记录</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
               </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查询修改后的记录</span>
                <span style="color: rgba(0, 0, 255, 1)">var</span> docs =<span style="color: rgba(0, 0, 0, 1)"> collection.Find(filter.Empty)
                              .Project(project.Include(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>).Include(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>).Include(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mark</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
                              .ToList();
                docs.ForEach(d </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> Console.WriteLine(d));
            }
            </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">
            {
                Console.WriteLine(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">无修改操作!</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            }</span></pre>
</div>
<p>  查询结果如下,可以看到age&lt;25的记录的mark字段值为young:</p>
<p><img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706153643710-968538836.png" alt=""></p>
<h2>4 删除(DeleteOne和DeleteMany)</h2>
<p>  删除操作比较简单,DeleteOne用于删除符合过滤条件的第一条记录,DeleteMany用于删除所有符合过滤条件的记录。</p>
<h3>1 删除单条记录(DeleteOne)</h3>
<p>  栗子:删除名字为张三的记录</p>
<div class="cnblogs_code">
<pre>            <span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> project = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Projection;
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除名字为张三的记录</span>
         <strong><span style="color: rgba(255, 102, 0, 1)"> collection.DeleteOne</span></strong>(filter.Eq(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">张三</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">));
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> docs =<span style="color: rgba(0, 0, 0, 1)"> collection.Find(filter.Empty)
                            .Project(project.Include(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>).Include(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>).Include(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mark</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
                            .ToList();
            docs.ForEach(d </span>=&gt; Console.WriteLine(d));</pre>
</div>
<p>  执行结果如下,我们看到张三的记录已经被删除了:</p>
<p><img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706155450284-488096566.png" alt=""></p>
<h3>2&nbsp;&nbsp;删除多条记录(DeleteMany)</h3>
<p>  栗子:删除所有年龄大于25岁的记录</p>
<div class="cnblogs_code">
<pre>            <span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> project = Builders&lt;BsonDocument&gt;<span style="color: rgba(0, 0, 0, 1)">.Projection;
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除age&gt;25的记录</span>
            DeleteResult result= collection.DeleteMany(filter.Gt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">25</span><span style="color: rgba(0, 0, 0, 1)">));
            Console.WriteLine($</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">一共删除了{result.DeletedCount}条记录</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> docs =<span style="color: rgba(0, 0, 0, 1)"> collection.Find(filter.Empty)
                            .Project(project.Include(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>).Include(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">name</span><span style="color: rgba(128, 0, 0, 1)">"</span>).Include(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mark</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">))
                            .ToList();
            docs.ForEach(d </span>=&gt; Console.WriteLine(d));</pre>
</div>
<p>  执行结果如下,所有年龄大于25岁的记录都被删除了:</p>
<p>&nbsp;<img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190706160146714-1652883312.png" alt=""></p>
<h2>5 类型映射</h2>
<h3>1 简单栗子</h3>
<p> 有时候我们要让查询的结果映射到我们的实体类中去,实现这个需求也十分简单,mongoDB支持自动映射,直接使用泛型即可,看一个栗子:</p>
<div class="cnblogs_code">
<pre>    <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Program
    {
      </span><span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span> Main(<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">[] args)
      {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">连接数据库</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> client = <span style="color: rgba(0, 0, 255, 1)">new</span> MongoClient(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mongodb://192.168.70.133:27017</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取database</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> mydb = client.GetDatabase(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">myDb</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取collection</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> collection = mydb.GetCollection&lt;Userinfo&gt;(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">userinfos</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;Userinfo&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> sort = Builders&lt;Userinfo&gt;<span style="color: rgba(0, 0, 0, 1)">.Sort;
            List</span>&lt;Userinfo&gt; userinfos = collection.Find(filter.Lt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">25</span>))    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查询年龄小于25岁的记录</span>
                                                 .Sort(sort.Descending(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>))<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">按年龄进行倒序</span>
<span style="color: rgba(0, 0, 0, 1)">                                       .ToList();
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">遍历结果</span>
            userinfos.ForEach(u =&gt; Console.WriteLine($<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">姓名:{u.name},年龄:{u.age},英文名:{u.ename.firstname} {u.ename.lastname}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">));
            Console.ReadKey();
      }
    }
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
    <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 用户类
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Userinfo
    {
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> _id { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">id</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> name { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">姓名</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> age { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">年龄</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> level { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">等级</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> Ename ename { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">英文名</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span>[] roles { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">角色</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> address { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">地址</span>
<span style="color: rgba(0, 0, 0, 1)">    }
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
    <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 英文名
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Ename
    {
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> firstname { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> lastname { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
    }</span></pre>
</div>
<p>执行结果如下:</p>
<p><img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190707145425866-1309140409.png" alt=""></p>
<h3>2 常用属性</h3>
<p>  上边的栗子仅仅用了基本的自动化映射,使用基本的自动化映射时:类和Bson中的字段必须严格一致(_id除外,可以自动映射到_id/id/Id),且Bson中的每一个字段在实体类中都必须有一个对应的字段,不然就会抛出异常,这就造成我们可能要写一个非常庞大的实体类,而且类中的字段命名也要严格和Bson中的字段一致。这些限制对我们开发来说是不能接受的,这里我们采用mongoDriver中的一些属性改进一下上边的代码,如下:</p>
<div class="cnblogs_code">
<pre>    <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Program
    {
      </span><span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span> Main(<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">[] args)
      {</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">连接数据库</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> client = <span style="color: rgba(0, 0, 255, 1)">new</span> MongoClient(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mongodb://192.168.70.133:27017</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取database</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> mydb = client.GetDatabase(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">myDb</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取collection</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> collection = mydb.GetCollection&lt;Userinfo&gt;(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">userinfos</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);

            </span><span style="color: rgba(0, 0, 255, 1)">var</span> filter = Builders&lt;Userinfo&gt;<span style="color: rgba(0, 0, 0, 1)">.Filter;
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> sort = Builders&lt;Userinfo&gt;<span style="color: rgba(0, 0, 0, 1)">.Sort;
            List</span>&lt;Userinfo&gt; userinfos = collection.Find(filter.Lt(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 128, 1)">25</span>))    <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查询年龄小于25岁的记录</span>
                                                 .Sort(sort.Descending(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>))<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">按年龄进行倒序</span>
<span style="color: rgba(0, 0, 0, 1)">                                       .ToList();
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">遍历结果</span>
            userinfos.ForEach(u =&gt;<span style="color: rgba(0, 0, 0, 1)">
            {   
                Console.WriteLine($</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">编号:{u.userId},姓名:{u.name},年龄:{u.age},英文名:{u.ename?.ming} {u.ename?.xing},性别:{u.gender}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
                Console.WriteLine($</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">其他属性:{u.otherprops}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
                Console.WriteLine();
            });
            
            Console.ReadKey();
      }
    }
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
    <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 用户类
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary
</span><span style="color: rgba(0, 128, 0, 1)">    //</span>
    <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Userinfo
    {
      
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> userId { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">id</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> name { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">姓名</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> age { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">年龄</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> Ename ename { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">英文名</span>
      
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">char</span> gender { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
      
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> nickname { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">昵称</span>
<span style="color: rgba(0, 0, 0, 1)">      
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> BsonDocument otherprops { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">其他属性</span>
<span style="color: rgba(0, 0, 0, 1)">    }
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
    <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 英文名
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Ename
    {
      
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> ming { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
      
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> xing { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
    }</span></pre>
</div>
<p>  执行结果如下:</p>
<p><img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190707161746411-1024244044.png" alt=""></p>
<p>这里用到了几个常用的属性,作用如下:</p>
<p>  <strong>BsonId</strong>修饰的字段对应BsonDocument中的_id;</p>
<p>  <strong>BsonDefaultValue(value)</strong>用于指定默认值;</p>
<p>  <strong>BsonIgnore</strong>表示不映射,即使BsonDocument中包含该字段也不会赋值给属性;</p>
<p>  <strong>BsonExtraElements</strong>修饰的字段用于存储没有映射到类中的其他属性;</p>
<p>  <strong>BsonElement</strong>可以指定修饰的属性映射到BsonDocument中的哪个字段,</p>
<p>还有一些其他的属性,具体可以参考官方文档。</p>
<h3>3 MongoDB使用Linq查询</h3>
<p>  MongoDB的驱动支持Linq查询,用法十分简单,引用&nbsp;<span class="cnblogs_code"> usingMongoDB.Driver.Linq;</span>&nbsp;&nbsp;后,使用&nbsp;<span class="cnblogs_code"> collection.AsQueryable() </span>&nbsp;获取<strong>IMongoQueryable&lt;T&gt;</strong>实例,然后就可以使用Linq对这个IMongoQueryable&lt;T&gt;进行查询了。</p>
<p>  使用过EF的小伙伴应该都了解IQueryable+Linq的查询默认不是将整个结果集立即加载到内存中,而是<strong>延迟加载</strong>的,即只有使用结果时(如 在执行First,Last,Single,Count,ToList等)才会将Linq转换成Sql,在数据库中执行查询操作。类似的,在使用IMongoQueryable&lt;T&gt;+Linq进行查询时默认也是延迟加载的,在需要使用查询结果时,驱动会将Linq转换成聚合管道命令(aggregation pipeline),如Linq中的Where被转换成$watch,Join转换为$lookup,Skip和Take转换为$skip和$limit等等,然后在Mongodb中执行这些管道命令获取结果,看一个栗子我们就会轻松地掌握了。</p>
<p>  首先添加一些测试数据:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">添加学生数据</span>
<span style="color: rgba(0, 0, 0, 1)">db.students.insertMany([
    {</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">no</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">1</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">stuName</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">jack</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">23</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">classNo</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">},
    {</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">no</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">2</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">stuName</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">tom</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">20</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">classNo</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">},
    {</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">no</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">3</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">stuName</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">hanmeimei</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">22</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">classNo</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">},
    {</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">no</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">4</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">stuName</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">lilei</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">age</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">24</span>, <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">classNo</span><span style="color: rgba(128, 0, 0, 1)">"</span>:<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">}
    ])
      
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">添加班级数据</span>
<span style="color: rgba(0, 0, 0, 1)">db.classxes.insertMany([
    {</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">no</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">clsName</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">A班</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">},
    {</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">no</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 128, 1)">2</span>,<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">clsName</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">B班</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">}
    ])</span></pre>
</div>
<p>  这里查找了两组数据:①基本查询:查找年龄大于22岁的学生;②连接查询:查询各个学生的学号、姓名、班级名。栗子比较简单,直接看代码吧</p>
<div class="cnblogs_code">
<pre>      <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span> Main(<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">[] args)
      {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">连接数据库</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> client = <span style="color: rgba(0, 0, 255, 1)">new</span> MongoClient(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">mongodb://192.168.70.133:27017</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取database</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> mydb = client.GetDatabase(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">myDb</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取collection</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> stuCollection = mydb.GetCollection&lt;Student&gt;(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">students</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> clsCollection = mydb.GetCollection&lt;Classx&gt;(<span style="color: rgba(128, 0, 0, 1)">"classxes</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">查找年龄大于22的学生</span>
            Console.WriteLine(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">-------------查找年龄大于22的学生列表--------------</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">1.query语法</span>
            List&lt;Student&gt; stuList1 = (<span style="color: rgba(0, 0, 255, 1)">from</span> stu <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> stuCollection.AsQueryable()
                        </span><span style="color: rgba(0, 0, 255, 1)">where</span> stu.age &gt; <span style="color: rgba(128, 0, 128, 1)">22</span>
                        <span style="color: rgba(0, 0, 255, 1)">select</span><span style="color: rgba(0, 0, 0, 1)"> stu).ToList();
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2.点语法</span>
            List&lt;Student&gt; stuList2 = stuCollection.AsQueryable().Where(s =&gt; s.age &gt; <span style="color: rgba(128, 0, 128, 1)">22</span><span style="color: rgba(0, 0, 0, 1)">).ToList();
            stuList1.ForEach(stu </span>=&gt; Console.WriteLine($<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">姓名:{stu?.stuName},年龄:{stu?.age}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">));
            Console.WriteLine();



            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">表连接查询,查询各个学生的班级名</span>
            Console.WriteLine(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">-------------表连接,查询学生的班级名----------------</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">1.query语法</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> result1 = <span style="color: rgba(0, 0, 255, 1)">from</span> stu <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> stuCollection.AsQueryable()
                        join cls </span><span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> clsCollection.AsQueryable()
                            on stu.classNo equals cls.no
                        </span><span style="color: rgba(0, 0, 255, 1)">select</span> <span style="color: rgba(0, 0, 255, 1)">new</span> { stuno =<span style="color: rgba(0, 0, 0, 1)"> stu.no, stu.stuName, cls.clsName };
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">2.点语法</span>
            <span style="color: rgba(0, 0, 255, 1)">var</span> result2 =<span style="color: rgba(0, 0, 0, 1)"> stuCollection.AsQueryable().Join(
                            clsCollection.AsQueryable(),
                            stu </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> stu.classNo,
                            cls </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> cls.no,
                            (stu, cls) </span>=&gt; <span style="color: rgba(0, 0, 255, 1)">new</span> { stuno=<span style="color: rgba(0, 0, 0, 1)">stu.no, stu.stuName, cls.clsName }
                         );
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">遍历结果</span>
            <span style="color: rgba(0, 0, 255, 1)">foreach</span> (<span style="color: rgba(0, 0, 255, 1)">var</span> item <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> result1)
            {
                Console.WriteLine($</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">学号:{item.stuno}, 姓名:{item.stuName}, 班级:{item.clsName}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
            }

            Console.ReadKey();
      }
    }
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
    <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 学生类
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary
</span><span style="color: rgba(0, 128, 0, 1)">    public class Student</span>
<span style="color: rgba(0, 0, 0, 1)">    {
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> no { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">学号</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> stuName { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">姓名</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> age { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">年龄</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> classNo { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">班级编号</span>
<span style="color: rgba(0, 0, 0, 1)">      
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> BsonDocument others { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
    }
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
    <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 班级类
    </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> Classx
    {
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">int</span> no { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">班级编号</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> clsName { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span>; }<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">班级名</span>
<span style="color: rgba(0, 0, 0, 1)">      
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> BsonDocument others { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
    }</span></pre>
</div>
<p>&nbsp; 执行结果如下:</p>
<p> <img style="border: 2px solid rgba(0, 0, 255, 1)" src="https://img2018.cnblogs.com/blog/1007918/201907/1007918-20190708114248881-307694742.png" alt=""></p>
<p><strong>小结</strong></p>
<p>  本篇简单介绍了C#驱动mongoDB进行CRUD操作,C#驱动功能十分丰富,几乎实现了所有的Mongo shell功能,这里就不再过多介绍了,有兴趣的小伙伴可以看看官方的文档。如果文中有错误的话,希望大家可以指出,我会及时修改,谢谢。</p>

</div>
<div id="MySignature" role="contentinfo">
    <div style="border: 2px solid #21759b; padding: 20px">
<div>作者:捞月亮的猴子</div>
    <div>出处:https://www.cnblogs.com/wyy1234/</div>
    <div>欢迎转载,但请标明出处。如果本文对您有些许帮助,点击一下推荐吧,Thanks♪(・ω・)ノ</div>
</div><br><br>
来源:https://www.cnblogs.com/wyy1234/p/11142672.html
頁: [1]
查看完整版本: 快速掌握mongoDB(四)—— C#驱动MongoDB用法演示