Ответ 1
db.collection.find({}, {_id: 1, name: 1, age: 1})
Первым аргументом для поиска (предикат) является ваш критерий выбора, например
db.collection.find({age: {$ gte: 21}})
Второй ограничивает поля, которые вы извлекаете, поэтому для имен более 21 и старше:
db.collection.find({age: {$ gte: 21}}, {name: 1})
Селектор полей всегда отбрасывает _id, если вы специально не отключите его:
db.collection.find({}, {_id: 0})
Однако Mongo не будет проверять наличие поля по умолчанию. Если вы хотите выбрать определенные поля и сопоставить только результаты с этими полями, вы должны использовать:
db.collection.find({age: {$ exists: true}})
На сайте MongoDB есть более подробное описание функции .find()!