Mongoose update not updating: { ok: 0, n: 0, nModified: 0 }
Asked Answered
Y

1

6

I have a collection named "permissions" on MongoDB. I want to implement a simple update like this:

let schema = new Schema({
    title: String
  });
  let Permissions = mongoose.model("Permission", schema);
  let permission = new Permissions();

  let query = {};
  let newValues = {
    $set: {
      title: "Yes"
    }
  };
  permission.updateOne(query, newValues, (err, docs) => {
    console.log(err); // null
    console.log(docs); // { ok: 0, n: 0, nModified: 0 }
    if (err) return cast.error(err);
    return cast.ok();
  });

However I receive { ok: 0, n: 0, nModified: 0 } in console log of docs and null in console log of err.

What am I doing wrong?

Yajairayajurveda answered 9/10, 2018 at 8:28 Comment(3)
Remove this let permission = new Permissions();. No need to create new instanceStream
That works. When should I make a new instance? When using save only?Yajairayajurveda
so what changes were made to the code....... i am also getting the nModified: 0Papeterie
S
2

According to the docs

Models are fancy constructors compiled from Schema definitions. An instance of a model is called a document. Models are responsible for creating and reading documents from the underlying MongoDB database.

So you need to create instance during the .save() call only. Other operations(update, read, delete) applied on the existing document and hence, no need to create instance.

Stream answered 9/10, 2018 at 11:0 Comment(1)
I faces a similar issue: my update gave me { n: 1, nModified: 0, ok: 1 }. My element was found but not update. This because I was using the instance of the schema object and not the schema itself. Thanks you very much.Cleavland

© 2022 - 2024 — McMap. All rights reserved.