我有一个包含大量文档(32,809,900)的集合。所有文档都有一个名为soft_deleted
的字段。我还创建了一个soft_deleted: 1
的字段。然后我测试了几个与该字段相关的查询。以下是我的结果:
Query Number of results Time in milliseconds
db.cgm_egvs
.find().count() 32809900 90
db.cgm_egvs
.find({soft_deleted: true}) 2820897 688
.count()
db.cgm_egvs
.find({soft_deleted: false}) 29989003 3983
.count()
db.cgm_egvs
.find({soft_deleted: null}) 0 42
.count()
db.cgm_egvs
.find({soft_deleted: {$ne: true}}) 29989003 82397
.count()
为什么这些查询的查询时间如此不同?我期望在查找 soft_deleted
为 true
或 false
的文档时花费相同的时间。更重要的是,为什么通过 != true
进行查询比其他任何查询都要慢这么多?