以“1234567890”格式提供带有 PhoneNumber 的BsonDocument
集合。此SQL获取所有PhoneNumbers,区号为300到399;
WHERE (LEFT(PhoneNumber,3) BETWEEN '300' AND '399')
我如何在MongoDB中执行此操作?如果可能,我想使用MongoDB.Driver.Builders
。
答案 0 :(得分:4)
如果您只想要从号码'3'开始的电话号码,您可以使用 @mstearn 的明智决定,这里只是c#实现:
var query = Query.EQ("PhoneNumber", new BsonRegularExpression("^3"));
但是,如果您需要查询范围345 - 369中的前3个数字以使其正常工作(没有慢速运算符:$where
,$regex
),您可以先创建其他字段并存储在那里3电话的号码(区号)。然后使用 @yi _H提出的查询,这里再次使用c#driver实现:
var query = Query.GTE("PhoneAreaCode", 345).LTE(369);
不关心mongodb中的额外字段 - 这是常见做法。在查询期间,额外的字段通常比任何计算工作得快。
答案 1 :(得分:1)
{'PhoneNumber': {'$gte': '300', '$lt': '400'}}
答案 2 :(得分:1)
{'PhoneNumber': /^3/ } or {'PhoneNumber': {'$regex': '^3'}}