在.NET Core中使用MongoDB明细教程是怎样的


这篇文章将为大家详细讲解有关在.NET Core中使用MongoDB明细教程是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。现在让我们来研究一下文档排序,指定要跳过或限制返回的文档数量,以及如何进行投影。当我们查询一个文档时,我们有时不想返回所有符合过滤条件的文档,而只返回其中的一部分。这就是limit方法的具体应用。对于MongoDB,可以通过调用Find返回的IFindFluentlimit方法来限制文档的数量。因此,如果我查询数据库中年龄小于40岁的学生,我会得到以下信息:为了让它把结果限制在最多两个学生,我调用了Limit()方法,并传递值为2的参数:然后得到以下输出,它只返回两个文档:如果我们想告诉数据库要跳过多少文档,我们使用fluent接口中的skip方法。因此,它类似于我们之前使用的代码,但是告诉数据库返回年龄小于40的所有代码,并跳过第一个。你会注意到Gregor Felix被跳过了。使用skipsort,我们可以将分页添加到应用程序中。假设我们要检索集合中的每个学生,一个页面上最多显示两个学生。我们可以通过如下过程实现:跟踪当前页面和要检索的最大文档数。确定总页数。然后检索文档,同时相应地应用skiplimit。我们可以使用以下代码来完成此操作,并将每个页面的结果打印到控制台:我们在控制台窗口中得到以下结果:这样,我们得到三个页面,因为我们总共有五个记录,每页最多检索两个文档。fluent接口的Sort方法采用SortDefinition作为参数,它可以从stringBsonDocument隐式转换,就像FilterDefinition一样。因此,如果我们想使用字符串作为排序定义,按姓氏升序排序,那么它将是:在字符串中,我们有{LastName:1},其中1告诉它升序排序,而-1告诉它按降序排序。如果我们使用前面更新的代码运行应用程序,它会在第一页返回James和Peter作为结果,如下所示:如果我们希望使用BsonDocument将姓氏按降序排列,则这将是:给出了与之前结果相反的结果:我们也可以使用SortDefinitionBuilder。因此,我们可以使用构建器帮助方法更新代码以创建一个排序定义,如下所示:我们仍然可以得到相同的结果,我们还可以组合不同字段上的升序和降序列表:或使用强类型对象时,使用表达式树:我们还可以使用表达式树来指定对SortBy,SortByDescending,ThenByThenByDescendingFLUENT接口的方法。按照前面的示例,这将被定义为:大多数情况下,我们将使用强类型对象,因为使用表达式树构建查询要容易得多。我们也可以使用fluent接口的Project方法进行投影。我们指定一个类似于排序和过滤的投影。使用表达式树或投影定义会导致稍微不同的行为。不同之处之一是,在使用投影定义语法时,必须明确地告诉它排除_id字段,否则,它会将其作为结果集的一部分返回。让我们更新代码,只返回FirstNa 香港云主机me使用更新的代码,我们的应用程序无法编译。给我们带来了另一个区别:通过投影定义,它隐式地将文档类型从Student转换为bsondocument,因此我们得到的是一个fluent对象,其结果将是一个BsonDocument(即使我们使用的是Student类型)。如果我们想和Student一起工作,我们必须指出我们仍然希望将类型保留为Student。因此,通过将Student设置为方法的类型来更新我们的代码,将得到以下输出:您可以看到,虽然我们只需要FirstName,但是FirstNameId被返回,而其他的则保持默认值。为了解决这个问题,我们显式地告诉它排除Id字段,并对投影定义进行以下更新:然后运行它,我们只返回FirstName,而其他值保持默认值:我们也可以使用投影生成器。.Project(Builders.Projection.Include(x => x.FirstName).Exclude(x => x.Id))这与使用定义生成器进行排序和筛选类似。我们也可以使用表达式树进行投影,然后将其投影到不同的结果。以下代码将只返回first 和last name,并将其映射到匿名类型:您可能已经注意到,我们并没有显式地指明要排除Id,而是与另一种方式不同,这是因为在强类型表达式树中,它同意只返回您指定的那些字段,而排除其他字段。关于在.NET Core中使用MongoDB明细教程是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

相关推荐: Android中怎么优化布局

这篇文章将为大家详细讲解有关Android中怎么优化布局,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。优化布局不是说优化界面的显示效果更好看、更美观。是指让界面的交互体验更好、更流程。因为手机性能有限,而绘制U…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 08/11 09:54
下一篇 08/11 09:55

相关推荐