编辑1
实际上经过进一步的调查后,似乎MogoDB只持有最近的7条记录,这与我将对象发送到猫鼬的方式有关,是否会覆盖它们?
我删除了对TTL / Timeout的所有引用,我只看到最近的7个对象(有7个不同的对象要存储,但随着时间的推移有多个值)。
非常感谢!
由于
加雷
这在文档中似乎很简单,但我无法让它工作。
我创建了一个如下所示的模板:
var trackingSchema = new mongoose.Schema({
VehicleID: {type: String, min: 0},
Label: {type: String, min: 0},
RegNumber: {type: String, min: 0},
VehPosDateTimeUTC: {type: String, min: 0},
Latitude: {type: String, min: 0},
Longitude: {type: String, min: 0},
Heading: {type: String, min: 0},
SpeedKPH: {type: String, min: 0},
OdometerKM: {type: String, min: 0},
SpeedMPH: {type: String, min: 0},
OdometerMiles: {type: String, min: 0},
EventCode: {type: String, min: 0},
GpsStrength: {type: String, min: 0},
Owner: {type: String, min: 0},
DriverName: {type: String, min: 0},
DriverID: {type: String, min: 0},
EventCodeId: {type: String, min: 0},
EventType: {type: String, min: 0},
createdAt: { type: Date, default : Date.now, expires: '1d'},
});
然而,当通过猫鼬创建对象时,进入Mongolab集的记录最多只保留1分钟。
我也尝试过createdAt行的其他变种,例如:
createdAt: { type: Date, default : Date.now, expires: 6000 }
现在我认为这可能与时区有关,但我不确定如何解决这个问题?
这是我用来将对象提交到mongoose的代码:
// Creating one vehicle record.
var vehicleData = new trackingRecord ({
VehicleID: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].VehicleID[0],
Label: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].Label[0],
RegNumber: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].RegNumber[0],
VehPosDateTimeUTC:responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].VehPosDateTimeUTC[0],
Latitude: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].Latitude[0],
Longitude: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].Longitude[0],
Heading: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].Heading[0],
SpeedKPH: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].SpeedKPH[0],
OdometerKM: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].OdometerKM[0],
SpeedMPH: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].SpeedMPH[0],
OdometerMiles: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].OdometerMiles[0],
EventCode: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].EventCode[0],
GpsStrength: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].GpsStrength[0],
Owner: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].Owner[0],
DriverName: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].DriverName[0],
DriverID: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].DriverID[0],
EventCodeId: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].EventCodeId[0],
EventType: responseJSON.VehPosResponse.position_list[0].CVehiclePos[i].EventType[0]
});
// Saving it to the database.
vehicleData.save(function (err) {if (err) console.log ('Error on save!')});
答案 0 :(得分:0)
找到解决方案,似乎在我的测试中我创建了一个单声道的索引,它有一个强制的当前时间戳字段,它也有一个TTL设置。
所以,我必须登录到mongodb并删除此索引才能返回常规行为。现在每次我更改过期时间都会重现它,必须进入,删除所有记录并删除索引以使事物按需运行。
不确定这是不是一个错误,但是它让我在几个小时的时间里撞到那里的墙上!
干杯
加雷