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 } } } );
我正在尝试在 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 } } } );