mongodb - Mongoose:按计算字段查找
问题描述
我有这样的架构:
const facturacionSchema = mongoose.Schema({
PrecioCantidad: Number,
Cantidad: Number,
Total: {
type: Number,
get: function() {
return this.PrecioCantidad * this.Cantidad
}
}
});
module.exports = mongoose.model('Facturacion', facturacionSchema);
我想按“总计”查找文件,例如:
Facturacion.find({ Total: 1000 });
“总计”字段不在数据库文件中,是一个计算字段。我不介意我是否必须做类似的事情:
Facturacion.find({ PrecioCantidad * Cantidad: 1000 });
但我不知道如何根据两个字段的计算找到。
谢谢。
解决方案
首先,我认为您无法访问 getter 中的其他字段(如果我错了,请纠正我)
然后,查找带有(PrecioCantidad * Cantidad)的文档如下(只是一种变通方法,当然有很多方法)
Facturacion.find({ $expr: { $eq: [ { $multiply: ["$PrecioCantidad", "$Cantidad"]} ], 1000}})
更新
要在 getter 中获取其他字段,请使用virtual
推荐阅读
- spring - 在 Spring Boot 中创建 bean 的默认顺序是什么?
- python - 如何连接逻辑和 GUI 文件(Python3、Tkinter)
- db2 - 从 DB2 中选择查询的输出对每条记录进行批量更新查询
- python - PyCharm:为什么在这种情况下签名不匹配?
- php - Lumen 没有检测到反向代理后面的 https
- typo3-9.x - 在“文件/链接上传”中添加新字段 tt_content
- c# - 如何在 MVC 应用程序上进行 ADFS 身份验证后向 ClaimsPrincipal 添加其他声明
- go - 为什么这种关于方法指针和全局变量初始化的行为在 Go 中是正确的?
- javascript - jQuery 验证仅适用于所有其他提交
- selenium - Jenkins 上的 Selenium ChromeDriver 在执行测试时抛出 Chrome 版本错误