Подтвердить что ты не робот

База данных MongoDB, эквивалентная для столбца SELECT1, column2 FROM tbl

Из моего MongoDB я хочу эквивалент для

  SELECT column1, column2
  FROM tbl

С помощью этого кода я получаю все "строки", а также все "столбцы"

  DBCollection collection = database.getCollection("names");
  DBCursor cursor = collection.find();

Я хотел бы, например, все "строки", но только "столбцы": id, name, age

Как мне это сделать?

Спасибо за любую помощь!

4b9b3361

Ответ 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()!

Ответ 2

Спасибо!, я исправил его с помощью кода ниже.

    BasicDBObject select = new BasicDBObject();
    select.put("id", 1);
    select.put("name", 1);
    select.put("age", 1);
    collection.find(new BasicDBObject(), select);

Выше кода дает мне все записи с именами только столбцов, как указано выше.