Я пытаюсь выбрать только определенное поле с
exports.someValue = function(req, res, next) {
//query with mongoose
var query = dbSchemas.SomeValue.find({}).select('name');
query.exec(function (err, someValue) {
if (err) return next(err);
res.send(someValue);
});
};
Но в моем ответе json я также получаю _id, моя схема документа имеет только два поля, _id и имя
[{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}]
Зачем???
javascript
node.js
mongodb
mongoose
TlonXP
источник
источник
.select
что это просто фильтр для выбора поля после того, как вы все это получите, я рекомендую использовать.find({}, 'name -_id')
.find({}, 'name -_id')
кажется не работает?Теперь есть более короткий способ сделать это:
Если вам нужна большая часть
Schema fields
и вы хотите опустить только некоторые, вы можетеname
добавить к полю префикс-
. Для бывшего"-name"
во втором аргументе будет не включатьname
поле в документе , тогда как пример , приведенный здесь будет только наname
поле в возвращенной документации.источник
blogItemModel.find({}, 'title intro_image intro_text publish_date', function(err, blog_items){..
Есть лучший способ справиться с этим, используя собственный код MongoDB в Mongoose.
http://docs.mongodb.org/manual/reference/method/db.collection.find/
Примечание:
Список перечисленных здесь объектов не будет возвращен / распечатан.
источник
Данные БД
запрос
Вывод:
Рабочий образец детской площадки
ссылка на сайт
источник
исключать
Приведенный ниже код будет извлекать все поля, кроме пароля, в каждом документе:
Вывод
Включают
Приведенный ниже код будет извлекать только поле электронной почты в каждом документе:
Вывод
источник
Точный способ сделать это - использовать
.project()
метод курсора с новымmongodb
иnodejs
драйверами.источник
.project()
работает только с агрегатом. Если вы хотите использовать его с поиском, используйте второй аргумент вfind({},{ name: 1, _id: 0 })
методе.Например,
0 означает игнорировать
1 означает шоу
источник