fields may also be exclusive: `{ name: 0 }` so need to account for either case