Я пытаюсь исключить объект в массиве из результатов при использовании find в Mongoose с MongoDB.
Запрос:
Model.findOne({
'eventid': query
}
, {
'email': 0,
'guests.$.email': 0
}, function (err, result) {
if (err) throw err;
if (result) {
console.log(result);
} else {
res.send(JSON.stringify({
error: 'Error'
}))
}
})
За исключением поля 'email'
с 'email': 0
работает нормально. Однако 'guests'
- это массив с несколькими объектами, и я хочу удалить поле электронной почты из результатов. Я получаю следующую ошибку:
MongoError: Невозможно исключить элементы массива с помощью позиционного оператора.
Очевидно, что оператор позиции $
можно использовать только для включения элементов в массив, но не для их удаления. Как лучше всего скрыть поле электронной почты в массиве 'guests'
.
Пример набора данных:
{ _id: 5b71c9af75a8e95dc33e7eef,
eventid: 'ALRW9by',
email: 'test@gmail.com',
guests:
[ { _id: 5b72f16ea61d2911d806daa8 },
{ _id: 5b7306b605bf17131f80fd0a,
userid: 'CuzcO3c',
naam: 'John',
email: 'test2@gmail.com' },
{ _id: 5b7306c705bf17131f80fd0b,
userid: 'xA7A65U',
naam: 'Ellen',
email: 'test3@gmail.com' }
] }