Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 按布尔字段查询mongo集合_Mongodb - Fatal编程技术网

Mongodb 按布尔字段查询mongo集合

Mongodb 按布尔字段查询mongo集合,mongodb,Mongodb,我在集合中有一个布尔字段,我想查询该字段值为false的所有记录。 此查询的最佳设计(性能)是什么? 此字段是否应保存布尔值true/false?真/空(存在=假)?或者对于字符串类型,它的性能更好。。是否正在保存字符串/空字符串或字符串/空(exists=false)? 我应该使用哪个索引?如果是真/假,最好将其存储为布尔类型。JSON支持布尔类型。不建议将其用作字符串“true”/“false”,因为字符串可能包含“true”/“false”或“true”/“false”,所有这些都会给查询

我在集合中有一个布尔字段,我想查询该字段值为false的所有记录。 此查询的最佳设计(性能)是什么? 此字段是否应保存布尔值true/false?真/空(存在=假)?或者对于字符串类型,它的性能更好。。是否正在保存字符串/空字符串或字符串/空(exists=false)?
我应该使用哪个索引?

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

如果在查询
{'field':null}
中按null进行检查,则包括字段不存在或字段值实际为null的位置。否则,如果您只想获取字段不存在的位置,则使用$exists
{'field':{$exists:false}
。不用说,
{'field':true}
{'field':{$exists:true}}

如果您想将不存在的字段视为false,并希望包含该逻辑,那么最好用NE-<代码> {“字段”检查:{$Ne:Trase} < /Cord>。但是MongoDB建议使用$or而不是否定查询,因此类似于

{$or:[{'field':null},{'field':false}]}

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

回到索引,索引不能很好地使用布尔类型,因为没有太多的数据隔离,但即使它是字符串,它也不会添加任何内容,因为最终它只能基于两个(或三个)值进行索引。所以我看不到任何比较优势