首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库存库存数据的Mongo聚合

库存库存数据的Mongo聚合
EN

Stack Overflow用户
提问于 2020-10-05 17:31:26
回答 1查看 95关注 0票数 1

我有一个下面的方案。

代码语言:javascript
复制
{
    name: {
        type: String
    },
    available_in: [{
        variation: {
            type: Number
        },
        variation_type: {
            type: String,
            enum: ['gm', 'kg', 'ml', 'ltr', 'unit', 'lbs', 'oz', 'pound', 'gallon']
        },
        rate: {
            type: Number
        },
        stock: {
            type: Number
        },
        discount_type: {
            type: String,
            enum: ['special', 'daily', 'normal', '', ' ']
        },
        discount_percentage: {
            type: Number
        },
        start_date: {
            type: Date
        },
        end_date: {
            type: Date
        },
        discounted_rate: {
            type: Number,
            required: true
        },
        is_deleted: {
            type: Boolean,
            default: false
        },
        tax_percentage: {
            type: Number,
            default: 0
        },
        tax_value: {
            type: Number,
            default: 0
        }
    }],
}

我想拿出available_in库存小于10且等于0的产品。我试着将查询放在$match中,但似乎不起作用。例如:-我有5个产品,其中2个产品在available_in数组中有一个对象,其中的库存小于10或0,那么如何通过mongo聚合获取这2个产品?对此有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-10-05 17:55:34

试试这个:

代码语言:javascript
复制
db.collection.find({"availabe_in.stock" : {$lt : 10}})

或者使用聚合管道:

代码语言:javascript
复制
db.collection.aggregate([{
     $match :{
          "availabe_in.stock" : {$lt : 10}
     }
}])

注意:0也小于10,因此添加equals to 0条件不需要任何特殊的or查询

如果您只想获取available_in数组中匹配元素,那么可以使用下面的聚合管道:

代码语言:javascript
复制
db.collection.aggregate([{
    $unwind : "$available_in"
},{
    $match : {
        "available_in.stock" : {
            $lt : 10
        }
    }
},{
    $group : {
        _id : "$_id",
        name : {$first : "$name"},
        available_in : {$push : "$available_in"}
    }
}])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64205979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档