В моем MongoDB у меня есть коллекция студентов с 10 записями, имеющими поля name
и roll
. Одна запись этой коллекции:
{
"_id" : ObjectId("53d9feff55d6b4dd1171dd9e"),
"name" : "Swati",
"roll" : "80",
}
Я хочу получить поле roll
только для всех 10 записей в коллекции, как мы это делаем в традиционной базе данных, используя:
SELECT roll FROM student
Я просмотрел много блогов, но все они приводят к запросу, в котором должно быть WHERE
предложение, например:
db.students.find({ "roll": { $gt: 70 })
Запрос эквивалентен:
SELECT * FROM student WHERE roll > 70
Мое требование - найти только один ключ без каких-либо условий. Итак, какова операция запроса для этого.
mongodb
projection
Шипра Свати
источник
источник
Ответы:
Из документов MongoDB :
В этом примере от людей в Монго, возвращаемые документы будут содержать только поля
item
,qty
и_id
.Таким образом, вы должны быть в состоянии выдать такое заявление, как:
Вышеуказанное утверждение выберет все документы в коллекции студентов, а возвращенный документ вернет только
roll
поле (и исключит_id
).Если мы не упомянем,
_id:0
поля будут возвращеныroll
и_id
. Поле _id всегда отображается по умолчанию. Таким образом, мы должны явно упомянуть_id:0
вместе сroll
.источник
0
для 9 из них? Изменить: Неважно, исключая_id
то есть,{field_I_want:1, _id:0}
кажется, работаетWith the exception of the _id field, you cannot combine inclusion and exclusion statements in projection documents.
это может быть интересно для некоторых из вас. ( источник )получить все данные из таблицы
получить все данные из таблицы без _id
получить все данные из одного поля с помощью _id
получить все данные из одного поля без _id
найти указанные данные, используя предложение where
найти данные, используя условие where и значение больше, чем условие
найти данные, используя условие where и больше или равно условию
найти данные, используя условие where и меньше или равно условию
найти данные, используя условие where и меньше, чем условие
источник
db.student.find({}, {_id:0})
спасибо за помощь.Я думаю, что mattingly890 имеет правильный ответ, вот еще один пример вместе с pattern / commmand
db.collection.find( {}, {your_key:1, _id:0})
источник
Вот, пожалуйста, 3 способа сделать, от кратчайшего до скучного:
Чтобы удалить конкретное поле, используйте
-
оператор:источник
Просто для образовательных целей вы также можете сделать это одним из следующих способов:
1.
2.
`
источник
Попробуйте следующий запрос:
Надеюсь это поможет!!
источник
В вашем примере вы можете сделать что-то вроде:
проекция
НОТА
ЧИТАТЬ ДАЛЕЕ
источник
Хотя ответ Гаутама завершен, стоит отметить, что эти команды могут отличаться от API к другому (для тех, кто не использует оболочку mongo).
Пожалуйста, обратитесь к документации ссылку для получения подробной информации.
Nodejs , у есть метод, называемый projection, который вы добавляете в свою функцию find для проецирования.
Следуя тому же набору примеров, команды, подобные приведенным ниже, можно использовать с Node:
db.student.find({}).project({roll:1})
Или
db.student.find({}).project({roll:1, _id: 0})
и так далее.
Опять же для пользователей nodejs, не забудьте (с чем вы уже должны быть знакомы, если раньше использовали этот API)
toArray
, чтобы добавить свою.then
команду.источник
Для лучшего понимания я написал похожий запрос MySQL.
источник
Это работает для меня,
нет условия в предложении where, т.е. внутри первых фигурных скобок. внутри следующих фигурных скобок: список имен полей проекции, которые необходимо указать в результате, а 1 указывает, что конкретное поле является частью результата запроса
источник
источник
Запрос на сборы MongoDB здесь - это сбор, а описание - это поле.
источник
Если вы хотите получить поле "Roll" только для всех 10 записей в коллекциях. Тогда попробуй это.
В MongoDb:
В Sql:
источник
Я просто хочу добавить к ответам, что если вы хотите отобразить поле, вложенное в другой объект, вы можете использовать следующий синтаксис
db.collection.find( {}, {{'object.key': true}})
Здесь ключ присутствует внутри объекта с именем object
источник
Это эквивалентно -
db.student.find ({}, {"roll": 1, "name": 1, "_id": 0})
Это эквивалентно -
источник
Используйте запрос в командной оболочке следующим образом:
1. Используйте
database_name
2. Который возвращает только данные конкретного поля активов при сопоставлении,
_id:0
указывает не отображать идентификатор в результатеисточник
В mongodb 3.4 мы можем использовать приведенную ниже логику, я не уверен насчет предыдущих версий
выберите откат от студента ==> db.student.find (! {}, {roll: 1})
вышеуказанная логика помогает определить некоторые столбцы (если их меньше)
источник
Используя Studio 3T для MongoDB, если я использую
.find({}, { _id: 0, roll: true })
его , я все равно возвращаю массив объектов с пустым_id
свойством.Использование JavaScript
map
помогло мне получить желаемоеroll
свойство только в виде массива строк:источник
Не уверен, что это отвечает на вопрос, но я считаю, что стоит упомянуть здесь. Существует еще один способ выбора одного поля (а не нескольких) с помощью
db.collection_name.distinct();
например,
db.student.distinct('roll',{});
Или, 2-й способ: использование
db.collection_name.find().forEach();
(несколько полей могут быть выбраны здесь путем объединения)например,
db.collection_name.find().forEach(function(c1){print(c1.roll);});
источник