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

MongoDB : Referencing first query in the second query

我正在尝试在 Mongodb 中执行以下两个查询。我坚持如何从 "Query #2" 中正确引用 "Query #1" 。这里的目标是按 "product_id" 分组。 "Product_id" 比 "variant_id." 更细化 我也可以将 product_id 非规范化并包含在 "events_inventories" 集合中,但我现在反对这样做。

给它。非常感谢任何帮助!:

//查询 #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"
        }

    }

}
]);

//查询#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"
        }
    }
}
]);

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

示例:

query1=db...;
ids=[];
query1.forEach(function(d) { ids.push(d._id.variant); });
query2=db.collection.aggregate( {$match: { variant_id:{$in: ids } } } );