有沒有辦法在不使用map/reduce的情況下查詢mongo上的不區分大小寫的值?mongodb上不區分大小寫的查詢
15
A
回答
23
假設你有一個包含tag
場文檔,你想搜索就可以了
Tags
{
tag,
...
}
第一種選擇是使用正則表達式(但它的工作緩慢,因爲@RestRisiko說):
db.tags.find({ "tag" : { "$regex" : "C#", "$options" : "-i" } })
第二個選項是創建另一個,小寫場(和MongoDB中它最好的方式):
Tags
{
tag,
tagLower,
..
}
並使用find
像往常一樣:
db.tags.find({ "tagLower" : "c#"})
它的運行速度更快,因爲上面的代碼可以使用索引搜索。
8
您必須標準化要查詢的數據。對大小寫不敏感的搜索使用正則表達式也可以,但不會使用索引。所以你唯一的選擇是正常化。如果您需要保留原始狀態,則需要對數據進行非規格化並將標準化值存儲在文檔的專用列中。
+0
+1對於正確的答案,我只是在我的答案中添加了示例。 – 2011-03-31 13:42:32
2
與Node.js一起使用時,最好在查詢中構建一個RegEx對象。
Room.findOne({'name': new RegExp(roomName, 'i')}, {}, function(err, room) {
...
0
使用正則表達式匹配如下。 '我'顯示不區分大小寫。
var collections = mongoDatabase.GetCollection("Abcd");
var queryA = Query.And(
Query.Matches("strName", new BsonRegularExpression("MSID", "i")),
Query.Matches("strVal", new BsonRegularExpression("154800", "i")));
var queryB = Query.And(
Query.Matches("strName", new BsonRegularExpression("Operation","i")),
Query.Matches("strVal", new BsonRegularExpression("8221", "i")));
var getA = collections.Find(queryA);
var getB = collections.Find(queryB);
相關問題
- 1. 區域不區分大小寫查詢
- 2. 區分大小寫查詢
- 3. MongoDB的查詢與不區分大小寫的架構元素
- 4. 不區分大小寫的查詢
- 5. Mongoid不區分大小寫的查詢
- 6. Solr不區分大小寫的查詢
- 7. mongoDB中的搜索功能,不區分大小寫查詢
- 8. 不區分大小寫查詢
- 9. 在jenssegers laravel/MongoDB中區分大小寫的搜索查詢
- 10. 如何在iOS上對分析查詢不區分大小寫?
- 11. MySQL中區分大小寫的查詢
- 12. MySQL區分大小寫的查詢
- 13. 區分大小寫的aes_decrypt查詢
- 14. 區分大小寫的查詢
- 15. MySQL查詢的WHERE區分大小寫
- 16. Doctrine2區分大小寫的查詢
- 17. 區分大小寫的LDAP查詢
- 18. 的SQL Server查詢區分大小寫
- 19. 區分大小寫的MySQL如查詢
- 20. 區分大小寫的查詢Idiorm/SQLite
- 21. LINQ查詢:如何做不區分大小寫的查詢?
- 22. sqlite高級區分大小寫查詢
- 23. Mysql查詢區分大小寫?
- 24. SQLite查詢區分大小寫
- 25. 不區分大小寫拼寫檢查?
- 26. 區分節點JS的MongoDB不區分大小寫
- 27. Java - MongoDB不區分大小寫不檢查完全匹配
- 28. 在Ormlite中,寫入不區分大小寫的查詢
- 29. 使區分大小寫不敏感的區分大小寫表
- 30. 區分大小寫的URL不區分大小寫
如果標籤包含問號,它將不起作用。 – 2015-12-23 21:02:53