猫鼬findOneAndUpdate模型

时间:2019-06-13 02:07:32

标签: mongodb mongoose mongoose-schema

如果我通过System.Reactive进行upsert,那么Mongoose模式的用途是什么?

我能找到的所有内容似乎都表明如果我执行findOneAndUpdate,则需要引用基本模式而不是实例。

这是我的设置:

findOneAndUpdate

如果我只是保存(并且该ssn已经存在,我将收到“独特”违规)。

const PersonSchema = new mongoose.Schema({
  ssn: {
    type: Number,
    unique: true,
  },
  first: String,
  last: String
})

const Person = mongoose.model("Person", PersonSchema)
const person = new Person({ssn: 123456789, first: "Foo", last: "Bar"})

相反,我发现我需要做类似的事情

person.save(); 

OR

const options = { upsert: true, new: true }
const query = { ssn: 123456789 }

Person.findOneAndUpdate(
  query,
  {
    ssn: 123456789,
    first: "Foo",
    last: "Bar"
  },
  options)

const options = { upsert: true, new: true } const query = { ssn: 123456789 } const newPerson = Object.assign({}, person._doc) // delete this so I don't get a conflict with Mongoose on the _id during insert delete newPerson._id Person.findOneAndUpdate(query, newPerson, options) 似乎并不关心特定的模型(或实例),而仅仅是进入底层MongoDB方法的一种机制。

是这样吗?还是我缺少一些显而易见的东西?

0 个答案:

没有答案