我在mongo atlas里有这份文件
_id: 5f8939cbedf74e363c37dd86,
firstname: "Person",
lastname: "Person lastname",
sex: "Masculino",
age: "20",
birthDay: 2020-10-07T00:00:00.000+00:00,
vaccines: Array
0:Object
dose: Array
_id: 5f8939cbedf74e363c37dd87
vaccine:5f7023ad96f7ed21e85be521
createdAt:2020-10-16T06:12:27.726+00:00
updatedAt:2020-10-16T06:12:27.726+00:00
1:Object
dose:Array
_id:5f893a9ca98e97188c93fea8
vaccine:5f70259796f7ed21e85be523
2:Object
dose:Array
_id:5f893acda98e97188c93fea9
vaccine:5f7023ad96f7ed21e85be521
这是我的 Mongoose 模式
const mySchema = new Schema({
firstname: {
type: String,
required: true,
},
lastname: {
type: String,
required: true,
},
sex: {
type: String,
required: true,
},
age: {
type: String,
required: true,
},
birthDay: {
type: Date,
required: true,
},
vaccines: [
{
type: new Schema(
{
vaccine: {
type: Schema.ObjectId,
ref: "Vaccine",
},
dose: Array,
},
{ timestamps: true }
),
},
],
});
每次我添加一个新的人疫苗数组得到一个新的对象与时间戳,如你所见,在我的js文件中,我使用以下代码:
const addPerson = (person) => {
const myPerson= new Model(person);
return myPerson.save();
};
然后当我为同一个人添加新疫苗时,它没有时间戳,我用下面的代码:
const addPersonVaccine = async ({ params, body }) => {
if (!params) return Promise.reject("Invalid ID");
const vaccines = [body];
const foundPerson = await Model.updateOne(
{
_id: params,
},
{
$push: {
vaccines: vaccines,
},
}
);
return foundPerson;
};
这是我体内的疫苗阵列[ { vaccine: '5f72c909594ee82d107bf870', dose: 'Primera' } ]
问题是,我没有关于下一个时间戳的结果,正如您在我的mongo atlas文档中所看到的:
1:Object
dose:Array
_id:5f893a9ca98e97188c93fea8
vaccine:5f70259796f7ed21e85be523
2:Object
dose:Array
_id:5f893acda98e97188c93fea9
vaccine:5f7023ad96f7ed21e85be521
这是在子文档或子模式中实现时间戳的最佳方式吗?
我将感谢你的回答,谢谢👏
2条答案
按热度按时间xytpbqjk1#
您可以对内部模式使用mongoose模式时间戳选项
了解更多Mongoose schema set timestamp on nested document
o2gm4chl2#
更新查询