Как выбрать извергов, включая новое поле, значение которого является суммой других определенных полей с мангустом
Я работаю с mongoose, и я хотел бы выбрать поля, включая новое поле, значение которого является суммой других конкретных полей. Например, есть схема модели, как показано ниже.
const monsterSchema = new Schema({
name: { type: String },
power: { type: Number },
armor: { type: Number },
});
Я хочу выбрать эти записи, имеющие поля "имя", "сила", "броня", "всего". Поле имеет значение в виде суммы "сила" и "броня".
Как я могу это сделать?
2 ответа
Решение
Используйте структуру агрегации, где вы можете запустить операцию агрегирования с $project
шаг конвейера с дополнительным вычисляемым полем следующим образом (при условии, что ваша модель Mongoose называется Monster):
Monster.aggregate([
{
"$project": {
"name": 1,
"power": 1,
"armor": 1,
"new_field": { "$add": [ "$power", "$armor" ] }
}
}
]).exec(function(err, result){
if(err) handleError(err);
console.log(JSON.stringify(result, null, 4));
})
Вы можете добавить виртуальное поле в вашу схему.
var personSchema = new Schema({
name: {
first: String,
last: String
}
});
personSchema.virtual('name.full').get(function () {
return this.name.first + ' ' + this.name.last;
});
var Person = mongoose.model('Person', personSchema);
Это не будет храниться в документе. Может помочь вам. Если вы хотите узнать больше об этом, обратитесь по ссылке ниже.