我正在尝试在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"
}
}
}
]);
答案 0 :(得分:0)
您需要将第一个查询的结果转换为变体ID的数组,然后使用“$ in”将其传递给第二个查询。
示例:
success.images