猿教程 Logo

.Net连接MongoDb:使用查询运算符返回查询

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

介绍

在上一篇文章中,我们研究了如何使用mongoimport工具从JSON文件导入所有文档。 我们在此过程中创建了两个集合:餐馆和邮政编码。 两者都是MongoDb中随时可用的测试数据源。 它们足够大,并为有意义的查询提供各种数据结构。

在这篇文章中,我们将探索MongoDb中的查询技术。 特别是我们将开始研究所谓的查询运算符,帮助我们构建比迄今为止所看到的更复杂的查询。 我们将首先演示大于或小于运算符的使用。

让MongoDb服务器和客户端准备好在两个不同的控制台应用程序,如果你想自己尝试的例子。

MongoDb中的查询运算符

查询运算符是MongoDb查询语法中的特殊关键字。 它们可以被一个领先的美元符号所识别,如$ gt代表“大于”。 例如。 如果要翻译SQL WHERE子句“WHERE population> 60000”,则需要在查询中使用$ gt运算符。 包含这些运算符的语法甚至更多的是JSON。 操作员表示一个条件,它将作为查询文档中的子文档。 这可能听起来很可怕,但它只是意味着一些扩展的JSON。

然而查询语法可能变得相当复杂。 数据聚合尤其如此,MongoDb将成为JSON和查询运算符的狂欢。

如果你想赶上去看一些查询操作员,这里是最常用的两个有用的链接:

  • 逻辑运算符

  • 比较运算符

我们不会在本课程中进入每一个查询运算符,这将是徒劳的。 目标是熟悉查询语法,你可以弄清楚其余的,它不是火箭科学。

大于和小于

我们将从邮政编码集合中提取人口大于50000的所有地方。这是查询:

use model
db.zipcodes.find({"pop" : {$gt : 50000}})

在这种情况下,我们提供我们要过滤的字段名称,即“pop”。 之后是$ gt运算符和运算符的值的underdocument。 此语句在SQL中等于“WHERE pop> 50000”。 该查询将响应一些文件,其中“pop”大于50000.这将会有很多,所以你可能会看到“键入”它更多“在控制台窗口中。 如果您想查看更多结果,可以输入“it”。

你可以猜到$ gt有一个对应的$ lt。 有$ gte和$ lte代表“大于或等于”和“小于或等于”。 我们提取一些人口最多为1000的较小的地方:

相关实例:

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

多重条件

在我们查看其他运营商之前,我想展示如何在查询中包含多个搜索条件。 这类似于SQL中的“AND”运算符。 至少有两个解决方案。 以逗号分隔的过滤器列表是我们只是将操作符值对添加到子文档的列表。 所以如果我们想找到人口在50000和60000之间的地方,我们可以写下列内容:

db.zipcodes.find({"pop" : {$lte : 60000, $gt : 50000}})

这是一个单一领域的多重条件,即“流行”。 为了过滤其他字段,我们可以使用其他子文档扩展JSON文档。 以下查询将找到位于马萨诸塞州的人口在50k至60k之间的地方,即“state”等于MA:

db.zipcodes.find({"pop" : {$lte : 60000, $gt : 50000}, "state" : "MA"})

另一个解决方案是使用$和逻辑运算符。 我们将在$或$和$和另一个职位看,但这里是一个例子。 $和运算符之后是一个与AND连接的条件数组。 最后一个例子可以重写如下:

db.zipcodes.find({$and : [{"pop": {$lte: 60000,$gt: 50000}},{"state": "MA"}]})

计数

如果您不想返回查询的文档,但希望看到符合条件的文档数量可以使用我们之前看到的count函数。 只需将其附加到查找功能:

db.zipcodes.find({"pop" : {$lte : 60000, $gt : 50000}, "state" : "MA"}).count()

应该返回6。

这些运算符也适用于字符串。 字符串比较是基于字符串中字符的UTF-8代码点。 请考虑以下示例:

db.zipcodes.find({"city" : {$gt : "B" , $lt: "C"}})

我们要提取名字大于B而小于C的地方。这是什么意思? 如果有一个名为“B”的地方,那么它将被排除在结果之外。 然而,由于“BA”具有比“B”更高的UTF-8代码点值,所以在结果集中返回“BA”。 要注意的是,目前MongoDb中没有与文化和归类对应的功能。 这可能会在未来改变。

我们将在下一篇文章中继续学习更多的运算符。


阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


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