插入默认值不起作用mongodb

时间:2019-05-15 02:21:46

标签: mongodb mongoose mongoose-schema

我正在使用猫鼬版本5.2.5,这是我的订单的示例模型

....
let PlaceOrderSchema = new mongoose.Schema({
        any: {}
}, { strict: false },
    { timestamps: { updatedAt: 'last_updated', createdAt: 'created' });

我在主脚本中使用以上模型以及猫鼬savefindOneAndUpdate。 在生产系统中,我们看到许多文档在保存文档中缺少last_updated键。

以下是我们的主脚本中猫鼬save方法和findOneAndUpdate的示例代码。我们看到有些文档具有updated_at键,但很少有文档没有它保存文档时

let orderModel = require('./orderModel');
let newOrder = {
    order_no: 1234
};

//save usage code
(new Order(newOrder).save({lean: true}, ()=> {

  //do...something

}));

//findOneAndUpdate usage Code
 let orderNo = 123
 OrderModel.findOneAndUpdate({ order_no: orderNo },
                {
                    $set: { items: [{product_id: 'abc', quantity: 1}] },
                }, 
                { new: true, upsert: true }, 
                (err, res) => {

                    //do_something
                });

任何人都可以分享为什么没有updated_at时保存很少的文档吗?

1 个答案:

答案 0 :(得分:1)

<div class="gallery"> <div class="textfield large2"> <div class="photoframe"></div> </div> <div class="textfield small"> <div class="photoframe"></div> </div> <div class="textfield small"> <div class="photoframe"></div> </div> <div class="textfield large"> <div class="photoframe"></div> </div> <div class="textfield medium"> <div class="photoframe"></div> </div> </div>操作期间,您需要使用选项setDefaultsOnInsert: true

Docs

  

默认情况下,猫鼬仅在创建新的时应用默认设置   文献。如果使用update()和   findOneAndUpdate()。但是,猫鼬4.x可让您选择加入   使用setDefaultsOnInsert选项的行为。

update