我有一個二進制字段,我正在mongo中存儲。此值目前是MD5散列值,但未來可能會發生變化。我試圖決定使用什麼bson二進制子類型。具體來說,我不確定我是否應該使用BSON.BSON_BINARY_SUBTYPE_DEFAULT或BSON.BSON_BINARY_SUBTYPE_MD5。 mongo能夠使用這個子類型來執行任何類型的優化嗎?例如,如果知道值是MD5,它可以構建更智能的索引嗎?對於二進制bson字段,mongo是否出於任何原因使用子類型
0
A
回答
0
MongoDB可以使用「hidden」bindata鍵存儲散列索引。
https://docs.mongodb.com/manual/core/index-hashed/
如果你從來沒有要執行這個特定的索引,哈希索引可以「縮小」或「擴大」可轉位場下/上一個已知尺寸派出一個通配符查詢。這意味着你可以使用由散列函數指定長度的索引鍵(長度可能爲32個字節)來索引一個非常長的字符串(4MB長)
應用程序不需要知道任何關於散列函數或內部,你只會看到更快的查詢結果,但犧牲了潛在的但非常不可能的散列衝突。
然後,應用程序也可以使用按位bindata運算符,包括要存儲哪種類型的bindata。最明顯的用例是存儲日誌的Web應用程序,包括用戶IP地址作爲二進制數據和用戶定義的子類型。
您的查詢可以使用$ bitsAllSet來使用標準網絡掩碼來查詢從特定網絡範圍進行的連接。 MongoDB是完全有能力檢查
- 文檔的密鑰包含正確的子類型(用戶定義和 不UUID/MD5)
- 如果第一匹配的推移,它會執行 稍貴位運算。
https://docs.mongodb.com/v3.2/reference/operator/query-bitwise/
相關問題
- 1. 用於二進制數據的BSON
- 2. NSItemProvider loadItemForTypeIdentifier:options:completionHandler:用於任何類型的(二進制)文件
- 3. 'null'是否屬於任何類型?
- 4. 關於「二進制」數據類型
- 5. 對於原始文本是否有任何數字wartermark技術?
- 6. 片段類字段被清零由於未知原因,
- 7. Django模型的字段類型是否具有任何類似於JavaScript的Numbers的字段?
- 8. 字段用於類型
- 9. 對於referer字段是否有任何非有效的內容?
- 10. 是否有任何類型或子類型進入和退出函數
- 11. 原型與敏捷對於新的內容類型和新的字段類型
- 12. 使用const void *而不是void *,對於任何類型
- 13. MySQLi準備是出於安全原因?
- 14. 你是否看到任何分段故障的原因超出該代碼段?
- 15. 出於某種原因
- 16. TensorFlow的二進制分類用於weighted_cross_entropy_with_logits
- 17. 對於二進制文件,我應該使用bfiles還是bigfiles?
- 18. Mongo字段A大於字段B
- 19. 如何檢查十進制數組中的任何值是否存在於表的十進制字段中?
- 20. 如何獲得對應於原始類型的引用類型?
- 21. 什麼是用於存儲JSON對象的Solr字段類型?
- 22. 如何使用mongodb-erlang和bson-erlang將objectid轉換爲二進制子類型3(uuid)?
- 23. 用於二進制操作的類型擦除
- 24. 用於多種數據庫類型的Liquibase二進制數組
- 25. 由於使用jnotify或任何其他原因jvm崩潰
- 26. 帶Nutch的Apache Hadoop 2.7.4嘗試失敗,出於任何原因
- 27. 如何因此,繼承人緩衝區溢出這個階段對於二進制炸彈
- 28. 對於字符串類型的cmis對象的屬性值是否有任何限制
- 29. 出於某種原因的java無法找到任何我在我的任何類相關的針對Android
- 30. BitTorrent KRPC使用BEncode代替BSON的原因是什麼?
但這些亞型僅僅是BSON規範的一部分,它沒有看到的東西與MongoDB服務器本身,數據庫中的一切存儲爲BSON,其子類型是枚舉類型你在你的應用程序中使用。 – Euclides
@Euclides我想這是我的問題。是僅適用於應用程序端邏輯的子類型,還是Mongo利用這些子類型進行任何優化? – herbrandson
是的,它只適用於應用程序端邏輯。有一些名爲散列索引的內容,但根據文檔,MongoDB支持任何單個字段的散列索引,但即便如此,它並不涉及您正在查看的子類型。 – Euclides