构建这个 LEFT()“SQL”在 MongoDB 查询中?

发布于 2024-11-23 16:38:10 字数 280 浏览 1 评论 0原文

拥有一个 BsonDocument 集合,其 PhoneNumber 格式为“1234567890”。此 SQL 获取区号在 300 到 399 之间的所有 PhoneNumbers;

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

我将如何在 MongoDB 中执行此操作?如果可能的话,我想使用 MongoDB.Driver.Builders

Have an BsonDocument collection with PhoneNumber in the "1234567890" format. This SQL gets all the PhoneNumbers with the Area Codes between 300 and 399;

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

How would I do this in MongoDB? I would like to use the MongoDB.Driver.Builders if possible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

画尸师 2024-11-30 16:38:11

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

var query = Query.EQ("PhoneNumber", new BsonRegularExpression("^3"));

但是假设您需要查询345范围内的前3个数字-- 369 要使其正常工作(没有慢速运算符:$where$regex),您可以创建附加字段并存储电话的前 3 个数字(区号)。然后使用 @yi_H 提出的查询,这里又是 C# 驱动程序实现:

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

不要关心 mongodb 中的 extra 字段 - 这是常见的做法。额外的字段通常比查询期间的任何计算都更快。

If you just want phone number that's starts from number '3' you can just use smart decision of @mstearn, here just c# realization:

var query = Query.EQ("PhoneNumber", new BsonRegularExpression("^3"));

But lets say if you need query first 3 numbers in range 345 -- 369 to make it work (without slow operators: $where, $regex) you can create additional field and store there first 3 numbers (area code) of phone. And then use query proposed by @yi_H , here again c# driver realization:

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

Don't care about extra field in mongodb -- it's common practice. Extra fields usual working faster than any calculation during querying.

拥抱影子 2024-11-30 16:38:11
{'PhoneNumber': {'$gte': '300', '$lt': '400'}}
{'PhoneNumber': {'$gte': '300', '$lt': '400'}}
素染倾城色 2024-11-30 16:38:11
{'PhoneNumber': /^3/ } or {'PhoneNumber': {'$regex': '^3'}}
{'PhoneNumber': /^3/ } or {'PhoneNumber': {'$regex': '^3'}}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文