I need to write down a category and its cost in category object. Now, in my code example, I am adding the products: $50 category to the user. After execution, 'categories': { products: '50$' } is displayed in the console. But if you add products: 1000$ again, it will overwrite and output 'categories': { products: '1000$' }. And I need to display 'categories': { products: '$50' , products: '$1000' }. How can this be implemented?
mongoClient.connect(function (err, client) {
if (err) return console.log(err);
const db = client.db("db");
const col = db.collection("coll");
col.findOneAndUpdate(
{
name: "User1",
},
{
$set: {
"сategories.products": "50$",
},
},
function (err, result) {
console.log(result);
client.close();
}
);
});
CodePudding user response:
Instead of
$set: {
"сategories.products": "50$"
}
use
$addToSet: {
сategories: {
products: "1000$"
}
}
CodePudding user response:
You should change the key name like products_2
CodePudding user response:
Well if I understood you correctly you have an object like categories:{products:$50}
but you want that whenever you post a new price it should get added to the object not overwrite it.
I think that is not possible either every time you create a new object like {products1:$50, products2:$1000}
and set your categories field to be equal to this new object
OR
you should make your model like categories:{products:[]}
. So, that you can just push the new price in the array.