如何编写MongoDb猫鼬查询以匹配两个属性

时间:2019-11-29 11:02:07

标签: mongodb mongoose mongodb-query mongoose-schema

我的股票模型文件如下所示:

const Stock = new Schema(
    {
        ClientId : {type : Schema.ObjectId},
        ClientName : {type : String}, 
        StockName : { type : String },
        StockType : { type : String },      
        ConsumedQuantity : {type : Number},
        TotalQuantity : {type : Number},
        WastageQuantity : {type : Number}, 

     },
    { timestamps: true },
);

这也是我的库存控制器发出的查询:

Stock.findOne({ ClientId : clientId }, (err, stock) => {


        if (err) {
            return res.status(404).json({
                err,
                message: 'Stock not found!',
            })
        }

        if( stock.ConsumedQuantity === undefined)
            stock.ConsumedQuantity = materialConsumed

        else
            stock.ConsumedQuantity += materialConsumed


        if( stock.WastageQuantity === undefined)
            stock.WastageQuantity = materialWasted

        else
            stock.WastageQuantity += materialWasted

        stock
            .save()
            .then(() => {

                return res.status(200).json({
                    success: true,
                    message: 'Material in inventory has been updated!',

                })
            })
            .catch(error => {

                return res.status(404).json({
                    error,
                    message: 'Material in inventory was not updated!',
                })
            })



    })

我希望能够基于两个条件来查询我的库存商品,首先,ClientId等于clientId,这是我从服务器请求中获取的值。其次,我希望stockItem的名称与字符串匹配。我该怎么做呢?是否可以在同一查询中使用AND运算符执行ClientId:clientId和StockName:stockName?请帮忙!谢谢。

1 个答案:

答案 0 :(得分:1)

Stock.findOne({ ClientId : clientId, StockName : yourString }, (err, stock) => {
    if (err) {
        return res.status(404).json({
            err,
            message: 'Stock not found!',
        })
    }

    if( stock.ConsumedQuantity === undefined)
        stock.ConsumedQuantity = materialConsumed

    else
        stock.ConsumedQuantity += materialConsumed


    if( stock.WastageQuantity === undefined)
        stock.WastageQuantity = materialWasted

    else
        stock.WastageQuantity += materialWasted

    stock
        .save()
        .then(() => {

            return res.status(200).json({
                success: true,
                message: 'Material in inventory has been updated!',

            })
        })
        .catch(error => {

            return res.status(404).json({
                error,
                message: 'Material in inventory was not updated!',
            })
        })
})
相关问题