【发布时间】:2015-03-28 23:58:52
【问题描述】:
我在 mongodb 控制台中运行以下代码来更新集合中的价格。我不完全确定如何用猫鼬实现这一点。我在猫鼬中尝试了类似的东西,但找不到变量 prodcache 和 prodvalues。
var prodCache = {};
var prodValues = db.workorders2.aggregate([{
"$unwind": "$lines"
}, {
"$group": {
"_id": null,
"products": {
"$addToSet": "$lines.Product"
}
}
}]).toArray()
db.products.find({
"value": {
"$in": prodValues[0].products
}
}).forEach(function(product) {
prodCache[product.value] = product.techprice;
});
db.workorders2.find({
"Status": "Closed",
"lines.Status": "Closed"
}).forEach(function(order) {
for (var i = 0; i < order.lines.length; i++) {
if (order.lines[i].TechAction == "Installed" || order.lines[i].TechAction == "Support Hardware Installed" || order.lines[i].TechAction == "Relocated") {
order.lines[i].techprice = prodCache[order.lines[i].Product];
}else if (order.lines[i].TechAction == "Receiver Swap" || order.lines[i].TechAction == "Service Swap"){
order.lines[i].techprice = 2;
}
}
db.workorders2.update({
"_id": order._id
}, {
"$set": {
"lines": order.lines
}
});
})
提前致谢。
【问题讨论】: