何のために速く?値が false の場合にフィールドを省略すると、ドキュメントがわずかに小さくなり、全体的な速度がわずかに向上する可能性があります。
ただし、フィールドを省略すると、特に省略されたフィールドと明示的な false 値が混在している場合に、false のクエリが難しくなります。
このサンプル コレクションでは、さまざまなクエリが何を返すかに注目してください。
> db.test.find()
{ "_id" : ObjectId("500eeb7c42d87d5d861e1219") }
{ "_id" : ObjectId("500eeb8242d87d5d861e121a"), "b" : false }
{ "_id" : ObjectId("500eeb8642d87d5d861e121b"), "b" : true }
>
> db.test.find({b:true})
{ "_id" : ObjectId("500eeb8642d87d5d861e121b"), "b" : true }
>
> db.test.find({b:false})
{ "_id" : ObjectId("500eeb8242d87d5d861e121a"), "b" : false }
>
> db.test.find({b:{$exists:false}})
{ "_id" : ObjectId("500eeb7c42d87d5d861e1219") }
>
> db.test.find({$or:[{b:false},{b:{$exists:false}}]})
{ "_id" : ObjectId("500eeb7c42d87d5d861e1219") }
{ "_id" : ObjectId("500eeb8242d87d5d861e121a"), "b" : false }
>
省略された値と明示的に false の値が混在している場合に作成する必要があるクエリはより複雑になり、クエリの実行が遅くなる可能性があることに注意してください。