我需要将文档保存到mongo集合中 我想保存“插入的”#39;和' updatedAt'日期字段,所以我想我不能一步到位......
这是我的最后一次尝试:
NAME DATE_OF_AVG DAILY_AVG_VALUE_1 DAILY_AVG_VALUE_2 DAILY_AVG_VALUE_3 DAILY_AVG_VALUE_4
---- ----------- ----------------- ----------------- ----------------- -----------------
TEST1 06-FEB-17 0 0 0 0
TEST1 05-FEB-17 0 0 0 0
....
....
TEST2 06-FEB-17 0 0 0 0
TEST2 05-FEB-17 0 0 0 0
....
....
TEST3 06-FEB-17 0 0 0 0
TEST3 05-FEB-17 0 0 0 0
....
....
但这样我最终会复制记录......: - (
有什么建议吗?
答案 0 :(得分:1)
不是做你正在做的事情,而是更喜欢用upsert更新文档的一种非常简单的方法。为此,您需要记住不要使用该模型来创建要插入的实例。您需要手动创建对象。
//don't put `updatedAt` field in this document.
var dataToSave = {
createdAt: new Date(),
id: 1,
author: "noor"
.......
}
Topic.update({ id: 123 }, { $set:{ updatedAt: new Date() }, $setOnInsert: dataToSave}, { upsert: true }, function(err, res){
//do your stuff here
})
如果是,那么此查询将首先检查是否存在集合的文档然后它将仅更新udpatedAt
,否则它将在集合中插入整个新文档。希望这能解答您的疑问。
答案 1 :(得分:0)
在架构定义中将时间戳设置为false,然后根据需要在创建时添加字段。
请参阅下面的示例模式定义:
var mongoose = require('mongoose')
, Schema = mongoose.Schema;
var Topic = new Schema({
id:{
type:String,
required: true
},
author:{
type:String,
required: true
}
},{
timestamps: false
});