构建这个 LEFT()“SQL”在 MongoDB 查询中?
拥有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您只想要从数字“3”开始的电话号码,您可以使用@mstearn的智能决策,这里只是c#实现:
但是假设您需要查询345范围内的前3个数字-- 369 要使其正常工作(没有慢速运算符:
$where
、$regex
),您可以创建附加字段并存储电话的前 3 个数字(区号)。然后使用 @yi_H 提出的查询,这里又是 C# 驱动程序实现:不要关心 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:
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:Don't care about extra field in mongodb -- it's common practice. Extra fields usual working faster than any calculation during querying.