MongoDB:在第二个查询中引用第一个查询

时间:2015-04-27 17:10:20

标签: mongodb mongodb-query nosql

我正在尝试在Mongodb中执行以下两个查询。我被困在如何从“查询#2”中正确引用“查询#1”。这里的目标是按“product_id”进行分组。 “Product_id”的粒度小于“variant_id”。我也可以在“events_inventories”集合中进行非规范化并包含product_id,但我暂时拒绝这样做。

在这里。非常感谢任何帮助!:

// QUERY#1:

var variant_inventory = db.getCollection('events_inventories').aggregate([

{
    $match: {
        "updated_at": {
            "$gt": new Date(2014, 1, 1)
        },
    }
},

{
    $group: {
        _id: {

            variant: "$variant_id",
            date: {
                "yr": {
                    "$year": "$updated_at"
                },
                "mo": {
                    "$month": "$updated_at"
                },
                "day": {
                    "$dayOfMonth": "$updated_at"
                }
            }

        },

        inventory: {
            $min: "$count_on_hand"
        }

    }

}
]);

// QUERY#2

db.getCollection('products_variants').aggregate([{
    $match: {
        variant_id: "$variant_inventory._id.variant"
    }
},

{
    $group: {
        _id: {
            product_id: "$product_id",
            date: "variant_inventory._id.date",
        },
        prodinventory: {
            $min: "variant_inventory.inventory"
        }
    }
}
]);

1 个答案:

答案 0 :(得分:0)

您需要将第一个查询的结果转换为变体ID的数组,然后使用“$ in”将其传递给第二个查询。

示例:

success.images