База данных MongoDB, эквивалентная для SELECT column1, column2 FROM tbl - PullRequest
18 голосов
/ 26 августа 2011

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

  SELECT column1, column2
  FROM tbl

С этим кодом я получаю все «строки», но также все «столбцы»

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

Я бы, напримеркак все 'строки', но только 'столбцы': идентификатор, имя, возраст

Как бы я это сделал?

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

Ответы [ 3 ]

37 голосов
/ 26 августа 2011

db.collection.find ({}, {_id: 1, имя: 1, возраст: 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: {$ существующие: true}})

На сайте MongoDB есть более подробное описание функции .find ()!

1 голос
/ 29 августа 2011

Спасибо! Я исправил это с помощью кода ниже.

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

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

0 голосов
/ 22 июня 2018

Если вы хотите выбрать один или несколько столбцов, например, SQL-запрос.например, если ваш SQL-запрос похож на этот

select name, content from knowledgebase where applicationId='2955f3e174dce55190a87ed0e133adwdeb92';

MongoDB запрос:

db.knowledgebase.find({ "applicationId": "2955f3e174dce55190a87ed0e133adwdeb92"}, { "name": 1,    "content": 1});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...