Javascript 选中mongoose sava()数据创建文档(如果不存在),否则更新数据
如果数据已经存在,我会将mongoose模式保存1秒钟,然后更新该文档Javascript 选中mongoose sava()数据创建文档(如果不存在),否则更新数据,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,如果数据已经存在,我会将mongoose模式保存1秒钟,然后更新该文档 this.sub.on('message',async function (topic, message) { const soilesensor = new SensorModel({ topic: topic, value : parseFloat(message.toString()) }) await soi
this.sub.on('message',async function (topic, message) {
const soilesensor = new SensorModel({
topic: topic,
value : parseFloat(message.toString())
})
await soilesensor.save();
cb && cb(topic,message);
})
我的猫鼬模式是
const mongoose = require('mongoose')
const sensor = mongoose.Schema({
topic : {type : String ,index : true},
value : {type :Number ,index : true},
date: { type: Date, default: Date.now , index: true}
})
const Sensor = mongoose.model('Sensors' , sensor )
module.exports = Sensor ;
如果数据已经存在,我只保存文档,更新您可以使用的文档。您需要通过upsert:true
this.sub.on('message',async function (topic, message) {
const soilesensor = new SensorModel({
topic: topic,
value : parseFloat(message.toString())
})
await soilesensor.save();
cb && cb(topic,message);
})
请尝试以下示例:
db.books.update(
{ item: "ZZZ135" }, // Query parameter
{ // Replacement document
item: "ZZZ135",
stock: 5,
tags: [ "database" ]
},
{ upsert: true } // Options
)
您需要将mongo_id添加到模型和要保存的对象中,只有这样mongoose才知道要查找什么文档。否则,您必须依赖某个唯一字段,然后查找文档是否存在,并使用新数据重新保存。您能否提供一些示例代码,说明如何将其添加到mongoose模式中