首页 > 解决方案 > 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 });

但我不知道如何根据两个字段的计算找到。

谢谢。

标签: mongodbmongoose

解决方案


首先,我认为您无法访问 getter 中的其他字段(如果我错了,请纠正我)

然后,查找带有(PrecioCantidad * Cantidad)的文档如下(只是一种变通方法,当然有很多方法)

Facturacion.find({ $expr: { $eq: [ { $multiply: ["$PrecioCantidad", "$Cantidad"]} ], 1000}})

更新

要在 getter 中获取其他字段,请使用virtual


推荐阅读