We will create a sample collection in mongo
db.nx.insert(
{
"user":"john",
"cart_item":[
{
"product":"product1",
"unit_price":5,
"qty":2,
"total":0
},
{
"product":"product2",
"unit_price":6,
"qty":3,
"total":0
},
{
"product":"product3",
"unit_price":4,
"qty":6,
"total":0
}
]
}
)
lets see inserted document
db.nx.find().pretty()
output:
{
"_id" : ObjectId("5ab290094d5d23c1ed27c8a2"),
"user" : "john",
"cart_item" : [
{
"product" : "product1",
"unit_price" : 5,
"qty" : 2,
"total" : 0
},
{
"product" : "product2",
"unit_price" : 6,
"qty" : 3,
"total" : 0
},
{
"product" : "product3",
"unit_price" : 4,
"qty" : 6,
"total" : 0
}
]
}
We want to update cart_item object array total using unit_price & qty.
Here is one way to do so
db.nx.find({ "_id" : ObjectId("5ab290094d5d23c1ed27c8a2")}).forEach(function(item) {
var new_cart_item=[];
for(var i=0;i < item.cart_item.length;i++){
item.cart_item[i].total = item.cart_item[i].unit_price * item.cart_item[i].qty;
new_cart_item.push(item.cart_item[i])
}
db.nx.update({ "_id" : ObjectId("5ab290094d5d23c1ed27c8a2")}, {
$set: { "cart_item": new_cart_item }
})
})
now we will see modified collection
db.nx.find().pretty()
output:
{
"_id" : ObjectId("5ab290094d5d23c1ed27c8a2"),
"user" : "john",
"cart_item" : [
{
"product" : "product1",
"unit_price" : 5,
"qty" : 2,
"total" : 10
},
{
"product" : "product2",
"unit_price" : 6,
"qty" : 3,
"total" : 18
},
{
"product" : "product3",
"unit_price" : 4,
"qty" : 6,
"total" : 24
}
]
}
No comments:
Post a Comment