我在集合中有一個布爾型字段,我想查詢該字段值爲false的所有記錄。 此查詢的最佳設計(性能)是什麼? 該字段是否應該保存布爾值true/false?真/空(存在= FALSE)?或者也許它有更好的字符串類型的性能..保存字符串/空字符串或字符串/ null(存在= false)? 我應該使用哪個索引?通過布爾型字段查詢mongo集合
0
A
回答
0
如果它是真/假,最好將它存儲爲布爾類型。 JSON支持布爾類型。不建議使用它作爲字符串「true」/「false」,因爲它可以作爲字符串可以具有「TRUE」/「FALSE」或「True」/「False」,所有這些都增加了查詢的負擔。由於它是一個字符串,因此在該字段中存在髒數據的風險。
如果您在查詢{'field':null}
中檢查null,它將包含字段不存在或字段值實際上爲null的情況。否則,如果你只是想得到該領域不存在的地方,那麼使用$ exists {'field' : {$exists : false}}
。不用說,{'field':true}
是不一樣{'field' : {$exists : true}}
如果你要考慮非現有字段爲假,並希望包括邏輯,也許這是最好的檢查與$ NE-{'field' : {$ne : true}}
。但是MongoDB的建議$或而非消極的查詢,所以像{$or : [{'field':null},{'field':false}]}
所有這些都可以通過保持它作爲一個字符串也可以做,但隨後會有額外的負擔,特別是如果你正在運行一個腳本來使一個字符串比較比布爾比較更不可靠。
回到索引,索引不能很好地與布爾類型一起工作,因爲沒有太多的要分離的數據,但即使它是字符串它不會添加任何咬合,因爲最終它將不得不基於只有兩個(或三個)值。所以我沒有看到任何比較優勢。
相關問題
- 1. 查詢空布爾字段
- 2. 如何根據布爾型字段來聚合查詢?
- 3. Lucene - 結合多字段查詢與布爾查詢
- 4. mongo db crosss集合查詢
- 5. Django通過集合查詢
- 6. 查詢按示例和布爾字段
- 7. 過濾布爾與布爾查詢:elasticsearch
- 8. Spring Mongo Group通過GroupBy查詢查詢
- 9. 如何通過「equals」和$ in查詢與Mongo相同的字段?
- 10. 通過查詢嵌入字段檢索字段子集
- 11. 將SQL子查詢作爲布爾型字段返回?
- 12. 通過SQL查詢從BIT類型列中獲取布爾值
- 13. Mongo集合查詢和運算符
- 14. 通過JSON API在Rails中更新布爾型字段?
- 15. 通過點擊鏈接改變布爾型字段
- 16. ArangoDB:過濾器通過集合類型的遍歷查詢
- 17. solrnet查詢獲取布爾類型字段的過濾器索引到solr
- 18. Solr過濾器查詢中多值字段上的布爾查詢
- 19. MongoDb:查詢集合自己的字段
- 20. 篩選父集合通過LINQ查詢
- 21. 如何更改mongo db集合中字段的類型
- 22. 如何通過過濾橋表字段來訂購查詢集?
- 23. 骨幹集合布爾型翻轉
- 24. MySQL布爾型返回布爾型查詢?
- 25. 集合中所有文檔中字段的集合Mongo
- 26. Mongo C#驅動程序與非空字段集合不過濾
- 27. 布爾查詢
- 28. Sailjs:如何通過水線將特定字段的集合保存到mongo db
- 29. 在ManytoMany字段Count()過濾查詢集?
- 30. 跳過mongo加蓋集合