如果我通过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方法的一种机制。
是这样吗?还是我缺少一些显而易见的东西?