skip to Main Content

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();
    }
  );
});

2

Answers


  1. Instead of

    $set: {
      "сategories.products": "50$"
    }
    

    use

    $addToSet: {
      сategories: {
        products: "1000$"
      }
    }
    
    Login or Signup to reply.
  2. 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.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search