构建这个左();SQL";在MongoDB查询中?

构建这个左();SQL";在MongoDB查询中?,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,使用“1234567890”格式的PhoneNumber创建一个BsonDocument集合。此SQL获取区号在300和399之间的所有电话号码 WHERE (LEFT(PhoneNumber,3) BETWEEN '300' AND '399') 在MongoDB中我将如何做到这一点?如果可能的话,我想使用MongoDB.Driver.Builders。如果你只想要从数字“3”开始的电话号码,你可以使用@mstearn的智能决策,这里就是c实现: {'PhoneNumber': {'$gt

使用“1234567890”格式的PhoneNumber创建一个
BsonDocument
集合。此SQL获取区号在300和399之间的所有电话号码

WHERE (LEFT(PhoneNumber,3) BETWEEN '300' AND '399') 

在MongoDB中我将如何做到这一点?如果可能的话,我想使用
MongoDB.Driver.Builders

如果你只想要从数字“3”开始的电话号码,你可以使用@mstearn的智能决策,这里就是c实现:

{'PhoneNumber': {'$gte': '300', '$lt': '400'}}
var query = Query.EQ("PhoneNumber", new BsonRegularExpression("^3"));
但假设您需要查询345-369范围内的前3个号码以使其正常工作(无慢速操作员:
$where
$regex
),您可以创建其他字段并存储电话的前3个号码(区号)。然后使用@yiu#H提出的查询,这里再次介绍c#驱动程序实现:

var query = Query.GTE("PhoneAreaCode", 345).LTE(369);

不要关心mongodb中的额外字段——这是常见的做法。在查询过程中,额外字段通常比任何计算都要快。

如果您只想要从数字“3”开始的电话号码,您可以使用@mstearn的智能决策,这里只需c#实现:

var query = Query.EQ("PhoneNumber", new BsonRegularExpression("^3"));
但假设您需要查询345-369范围内的前3个号码以使其正常工作(无慢速操作员:
$where
$regex
),您可以创建其他字段并存储电话的前3个号码(区号)。然后使用@yiu#H提出的查询,这里再次介绍c#驱动程序实现:

var query = Query.GTE("PhoneAreaCode", 345).LTE(369);

不要关心mongodb中的额外字段——这是常见的做法。在查询过程中,额外的字段通常比任何计算都要快。

LEFT是字符串前三个字符的子字符串。谢谢,但如何使用它?这样地?var gte=Query.gte(“左(电话号码,3)”,“300”);左边是字符串前三个字符的子字符串。谢谢,但我该如何使用它?这样地?var gte=Query.gte(“左(电话号码,3)”,“300”);谢谢你冗长的回答!谢谢你冗长的回答!