Would it be possible to rename db.foo.drop() to db.foo.dropCollection() ? It is quite easy to confuse this on the shell, e.g. type db.foo.drop(
{x:1}) instead of db.foo.remove(
{x:1}).
If not, then at least db.foo.drop(
{x:1}) should throw an exception rather than proceed to drop the collection, since most likely it has been confused with remove.