猿教程 Logo

.Net连接MongoDb:limit, sort 和 skipp

介绍

在上一篇文章中,我们在MongoDb中查看了几个阵列相关的搜索操作。 我们看到了在数组和子文档中进行搜索的示例。 我们还经历了像数组经常使用的$ all和$in这样的运算符。 此外,我们还看到了点对点的作用,以便在JSON对象结构中更深入地进行搜索。

在这篇文章中,我们将介绍与搜索有关的各种其他功能:限制,排序和跳过对应于MS SQL中的TOP,ORDER BY和OFFSET / FETCH操作符。

光标对象

当我们在一个集合(如db.zipcodes.find())上调用find()方法时,它返回一个游标。 它类似于在MS SQL中分配游标的情况,您可以使用它来遍历搜索结果中的记录。 游标对象有许多方法可以用来改进我们的搜索。

limit

将搜索结果限制在顶部x个项目中是常见的。 一个例子是,如果我们要在加载测试结果中显示10个最慢的URL。 在这种情况下,limit()函数正是我们需要的。 它接受一个整数如下:

db.zipcodes.find().limit(10)

查询将返回集合中的前10个项目。 我们当然可以为之前看过的find函数提供通常的搜索参数:

db.zipcodes.find({"pop" : {$lte : 1000}}).limit(5)

skip

跳过通常与结果集中的分页结合使用。 您可能已经看到显示前10个项目的表,然后您可以单击表的第2页,并检索接下来的10个项目等等。 分页是跳过第一个x个项目,然后限制结果集的组合。 也可以使用也接受整数的skip()函数:

db.zipcodes.find({"pop" : {$lte : 1000}}).skip(3).limit(5)

上述查询将首先跳过结果集中的前3项,然后将结果限制为5项。

sort

订购结果集也是一个很常见的操作。 我们要为用户排序结果,以便他们能够更轻松地找到想要的内容:按城市名称或邮政编码对地点进行排序。 排序函数接受一个JSON文档,我们可以在其中声明要排序的字段和顺序。 排序是上升还是下降由-1或1指定,其中1表示上升,-1表示降序。 以下是以升序排列餐厅名称的示例:

db.restaurants.find().sort({"name" : 1})

字符串排序基于字符串的UTF-8代码值。

我们可以对等同于MS SQL中的THEN BY子句的多个字段进行排序。 当然我们只需要扩展JSON输入:

db.zipcodes.find().sort({"city" : -1, "pop" : 1})

上述查询按城市排序按顺序排列邮政编码,然后按照升序排列,如果有两个相同的地名,如ZEELAND和ZEPHYRHILLS,则按城市排序。

limit, sort 和 skipp

没有什么可以阻止我们结合这些功能。 这里有一个例子:

db.zipcodes.find().skip(100).limit(5).sort({"city" : -1, "pop" : 1})


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CsharpMongo/9.html