首页 文章

通过布尔字段查询mongo集合

提问于
浏览
0

我在集合中有一个布尔字段,我想查询该字段值为false的所有记录 . 此查询的最佳设计(性能)是什么?这个字段应该保存布尔值true / false吗?真/空(存在= FALSE)?或者它可能具有更好的String类型性能..保存String / Empty String或String / null(exists = false)?我应该使用哪个索引?

1 回答

  • 0

    如果是真/假,最好将其存储为布尔类型 . JSON支持布尔类型 . 使用它作为字符串“true”/“false”不建议使用,因为字符串可以具有“TRUE”/“FALSE”或“True”/“False”,所有这些都会增加查询的负担 . 在该字段中存在脏数据的风险,因为它是字符串 .

    如果在查询 {'field':null} 中检查为null,则它包括where字段不存在或字段值实际为null . 否则,如果您只想获得该字段不存在的位置,请使用$ exists {'field' : {$exists : false}} . 不用说 {'field':true}NOT 相同 NOT

    如果您想将非现有字段视为false并希望包含该逻辑,可能最好使用$ ne- {'field' : {$ne : true}} 进行检查 . 但是,MongoDB建议使用$或者不是否定查询,所以像 {$or : [{'field':null},{'field':false}]}

    所有这些事情都可以通过将它保持为字符串来完成,但是会有额外的负担,特别是如果您运行脚本来进行字符串比较,这比布尔比较更不可靠 .

    回到索引,索引在布尔类型中不能很好地工作,因为没有太多可以隔离数据,但即使它是String也不会添加任何咬合,因为最终它只需要基于两个索引(或者三) Value 观 . 所以我没有看到任何比较优势 .

相关问题