有BsonDocument
集合電話號碼在「1234567890」格式。這個SQL獲取所有電話號碼的區號在300到399之間;在MongoDB Query中構建這個LEFT()「SQL」?
WHERE (LEFT(PhoneNumber,3) BETWEEN '300' AND '399')
我該如何在MongoDB中執行此操作?如果可能,我想使用MongoDB.Driver.Builders
。
有BsonDocument
集合電話號碼在「1234567890」格式。這個SQL獲取所有電話號碼的區號在300到399之間;在MongoDB Query中構建這個LEFT()「SQL」?
WHERE (LEFT(PhoneNumber,3) BETWEEN '300' AND '399')
我該如何在MongoDB中執行此操作?如果可能,我想使用MongoDB.Driver.Builders
。
如果你只是想電話號碼,那是從數字開頭的 '3',你可以只使用@mstearn的聰明的決定,這裏只是C#實現:
var query = Query.EQ("PhoneNumber", new BsonRegularExpression("^3"));
但可以說,如果您需要查詢範圍345 - 369中的前3個數字以使其工作(沒有慢速運營商:$where
,$regex
),您可以創建附加字段並在那裏存儲手機的前3個號碼(區號)。然後@yi _H使用提出查詢,在這裏再次C#實現驅動:
var query = Query.GTE("PhoneAreaCode", 345).LTE(369);
不要在MongoDB的關心額外場 - 這是常見的做法。額外的字段在查詢期間通常比任何計算都快。
感謝您的詳細解答! – CmdrTallen
不客氣 –
{'PhoneNumber': {'$gte': '300', '$lt': '400'}}
{'PhoneNumber': /^3/ } or {'PhoneNumber': {'$regex': '^3'}}
LEFT是串的前三個字符的子串。 –
謝謝,但我該如何使用它?喜歡這個? var gte = Query.GTE(「LEFT(PhoneNumber,3)」,「300」); – CmdrTallen