我只找到了创建或更新文档的方法。如果不存在,我需要创建,但是如果已经存在,则不执行任何操作。用猫鼬怎么做?
请注意,findOneAndUpdate将不起作用,因为如果查找文档,它将对其进行更新!我不要。
更新:
我只想创建一个称为order_number
的变量,该变量可以递增。但是,要递增,我必须确保该文档存在。但是,如果存在,我无法更新其值 。
我尝试过:
let r = await OrderNumber.findOneAndUpdate({ unique: 0 }, { unique: 0, order_number: 0 }, { upsert: true });
它不存在时会成功创建,但是总是将order_number
更新为0
。我不希望这种情况发生。
答案 0 :(得分:1)
作为唯一的方法,我通过两个数据库调用找到了它,因为一般情况下插入没有任何过滤器,除非使用findOneAnd*
上的upsert
或updates
-不看。然后,唯一的选择是进行两次调用,这是基本代码,请用适当的函数包装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();
}