Как с помощью оф драйвера сделать FindOne с выборкой конкретных полей?

В MongoDB для получения документов с выборкой конкретных полей вы можете использовать метод findOne() с проектным оператором $project в MongoDB драйвере.

Вот пример кода на различных языках программирования, используя официальные MongoDB драйверы:

1. JavaScript (Node.js) с использованием драйвера mongodb:

const MongoClient = require('mongodb').MongoClient;

async function findOneWithProjection() {
  const uri = 'mongodb://localhost:27017';
  const client = new MongoClient(uri);

  try {
    await client.connect();
    const collection = client.db('mydatabase').collection('mycollection');

    const query = { name: 'John Doe' };
    const projection = { name: 1, age: 1 }; // выбранные поля

    const result = await collection.findOne(query, { projection });
    console.log(result);
  } finally {
    await client.close();
  }
}

findOneWithProjection();

2. Python с использованием официального драйвера pymongo:

from pymongo import MongoClient

def find_one_with_projection():
    client = MongoClient('mongodb://localhost:27017')
    collection = client['mydatabase']['mycollection']

    query = { 'name': 'John Doe' }
    projection = { 'name': 1, 'age': 1 } # выбранные поля

    result = collection.find_one(query, projection=projection)
    print(result)

find_one_with_projection()

3. Java с использованием драйвера mongodb-driver:

import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.model.Projections;
import org.bson.Document;

public class FindOneWithProjection {
    public static void main(String[] args) {
        try (MongoClient client = MongoClients.create("mongodb://localhost:27017")) {
            MongoDatabase database = client.getDatabase("mydatabase");
            MongoCollection<Document> collection = database.getCollection("mycollection");

            Document query = new Document("name", "John Doe");
            Document projection = new Document("name", 1).append("age", 1); // выбранные поля

            Document result = collection.find(query).projection(projection).first();
            System.out.println(result);
        }
    }
}

Эти примеры демонстрируют, как использовать findOne() или find_one() с проектным оператором $project для получения конкретных полей в MongoDB драйверах. При создании проекции вы можете указывать нужные поля в виде объекта, где ключ - это имя поля, а значение - 1, если поле должно быть включено в результат, и 0, если поле должно быть исключено из результата.