如何创建猫鼬(如果不存在但不更新)

时间:2020-01-15 17:02:11

标签: mongodb mongoose

我只找到了创建或更新文档的方法。如果不存在,我需要创建,但是如果已经存在,则不执行任何操作。用猫鼬怎么做?

请注意,findOneAndUpdate将不起作用,因为如果查找文档,它将对其进行更新!我不要。

更新:

我只想创建一个称为order_number的变量,该变量可以递增。但是,要递增,我必须确保该文档存在。但是,如果存在,我无法更新其值

我尝试过:

let r = await OrderNumber.findOneAndUpdate({ unique: 0 }, { unique: 0, order_number: 0 }, { upsert: true });

它不存在时会成功创建,但是总是将order_number更新为0。我不希望这种情况发生。

1 个答案:

答案 0 :(得分:1)

作为唯一的方法,我通过两个数据库调用找到了它,因为一般情况下插入没有任何过滤器,除非使用findOneAnd*上的upsertupdates-不看。然后,唯一的选择是进行两次调用,这是基本代码,请用适当的函数包装try/catch并添加错误处理:

const mongoose = require('mongoose')
const Schema = mongoose.Schema;

const orderNumberSchema = new Schema({
    any: {}
}, {
    strict: false
});

const OrderNumber = mongoose.model('order_number', orderNumberSchema, 'order_number');

let resp = await OrderNumber.findOne({ unique: 0 });

if (!resp) {
    let orderNumberObj = new OrderNumber({ unique: 0, order_number: 0 })
    let r = await orderNumberObj.save();
}