Anonymous
Mongodb $ push $ in -in -a Marray сбрасывает дату создания для всех подразделов
Сообщение
Anonymous » 02 сен 2025, 21:17
Надеюсь, это имеет смысл. Используя Mongoose, чтобы выдвинуть новые элементы в массив подпросдокументов, документы добавляются нормально, однако в определенных (случайных) случаях дата создания текущих подраздел в массиве все меняется до последней добавленной временной метки. Это только начало происходить в последнее время, и я не могу воссоздать проблему локально, однако в производстве мои клиенты (многие пользователи) испытывают это.
Код: Выделить всё
const DocumentFileSchema = new Schema({
user: {
id: {
type: mongoose.Schema.Types.ObjectId,
required: true
},
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
}
},
file: {
type: String,
required: true
},
name: {
type: String,
required: true
}
}, {
timestamps: true
});
const ShipmentSchema = new Schema({
...
documents: [DocumentFileSchema]
}, {
timestamps: true,
collection: 'shipments',
toJSON: { virtuals: true }
})
< /code>
Я добавляю файлы, используя следующую функцию (загрузка, обрабатывающаяся в другом месте).
Я недавно добавил дату создания в эту функцию, чтобы установить значение вместо того, чтобы позволить Mongo обрабатывать метку времени, и это не решило проблему. < /p>
const addFiles = async (id, body, files) => {
let user = JSON.parse(body.user);
let docs = [];
if (files) {
files.forEach(v => docs.push({ user: { ...user }, name: v.key.replace('shipments/',''), file: withHttp(v.location), createdAt: new Date() }));
return ShipmentModel.findByIdAndUpdate(
{ _id: id },
{ $push: { documents: { $each: docs } } },
{ new: true }
);
}
}
< /code>
Запись в Mongo (локально) работает безупречно, но, как упоминалось в производстве (которая является той же базой данных Mongo), пользователи загружают документы в разное время, и база данных заканчивается всеми временными лампами в Subdocuments (правильно, правильно, Timestmps).{
"_id": {
"$oid": "xxx"
},
...
"documents": [
{
"_id": {
"$oid": "xxx"
},
"user": {
"id": {
"$oid": "xxx"
},
"firstName": "John",
"lastName": "Doe"
},
"name": "VERSION 2-A.pdf",
"file": "xxx.pdf",
"updatedAt": {
"$date": "2025-08-20T16:13:21.609Z"
},
"createdAt": {
"$date": "2025-08-20T16:13:21.609Z"
}
},
{
"_id": {
"$oid": "xxx"
},
"user": {
"id": {
"$oid": "xxx"
},
"firstName": "Jane",
"lastName": "Doe"
},
"name": "PDF_Caregiver Connections-2.pdf",
"file": "xxx.pdf",
"updatedAt": {
"$date": "2025-08-20T16:54:59.307Z"
},
"createdAt": {
"$date": "2025-08-20T16:54:59.307Z"
}
}
],
"createdAt": {
"$date": "2024-07-23T18:05:50.052Z"
},
"updatedAt": {
"$date": "2025-08-20T17:28:39.538Z"
},
"__v": 0
}
< /code>
Когда другой пользователь добавляет новый документ в совершенно отдельное время, это то, что происходит при производстве (но происходит только случайным образом, а не для каждой доставки), он сбрасывает дату созданного в последнюю TimeStamp: < /p>
{
"_id": {
"$oid": "xxx"
},
...
"documents": [
{
"_id": {
"$oid": "xxx"
},
"user": {
"id": {
"$oid": "xxx"
},
"firstName": "JOE",
"lastName": "RANTSEVIC"
},
"name": "937379JR RC.pdf",
"file": "xxx.pdf",
"createdAt": {
"$date": "2025-08-25T11:51:49.375Z"
},
"updatedAt": {
"$date": "2025-08-25T11:51:49.375Z"
}
},
{
"_id": {
"$oid": "xxx"
},
"user": {
"id": {
"$oid": "xxx"
},
"firstName": "ALAN",
"lastName": "SALAZR"
},
"name": "RP-937379JR-Carrier-Contract.pdf",
"file": "xxx.pdf",
"createdAt": {
"$date": "2025-08-25T11:51:49.375Z"
},
"updatedAt": {
"$date": "2025-08-25T11:51:49.375Z"
}
}
],
"createdAt": {
"$date": "2025-08-25T11:15:00.627Z"
},
"updatedAt": {
"$date": "2025-08-25T15:09:36.155Z"
},
"__v": 0
}
Пожалуйста, помогите!
Подробнее здесь:
https://stackoverflow.com/questions/797 ... bdocuments
1756837065
Anonymous
Надеюсь, это имеет смысл. Используя Mongoose, чтобы выдвинуть новые элементы в массив подпросдокументов, документы добавляются нормально, однако в определенных (случайных) случаях дата создания текущих подраздел в массиве все меняется до последней добавленной временной метки. Это только начало происходить в последнее время, и я не могу воссоздать проблему локально, однако в производстве мои клиенты (многие пользователи) испытывают это.[code]const DocumentFileSchema = new Schema({ user: { id: { type: mongoose.Schema.Types.ObjectId, required: true }, firstName: { type: String, required: true }, lastName: { type: String, required: true } }, file: { type: String, required: true }, name: { type: String, required: true } }, { timestamps: true }); const ShipmentSchema = new Schema({ ... documents: [DocumentFileSchema] }, { timestamps: true, collection: 'shipments', toJSON: { virtuals: true } }) < /code> Я добавляю файлы, используя следующую функцию (загрузка, обрабатывающаяся в другом месте). Я недавно добавил дату создания в эту функцию, чтобы установить значение вместо того, чтобы позволить Mongo обрабатывать метку времени, и это не решило проблему. < /p> const addFiles = async (id, body, files) => { let user = JSON.parse(body.user); let docs = []; if (files) { files.forEach(v => docs.push({ user: { ...user }, name: v.key.replace('shipments/',''), file: withHttp(v.location), createdAt: new Date() })); return ShipmentModel.findByIdAndUpdate( { _id: id }, { $push: { documents: { $each: docs } } }, { new: true } ); } } < /code> Запись в Mongo (локально) работает безупречно, но, как упоминалось в производстве (которая является той же базой данных Mongo), пользователи загружают документы в разное время, и база данных заканчивается всеми временными лампами в Subdocuments (правильно, правильно, Timestmps).{ "_id": { "$oid": "xxx" }, ... "documents": [ { "_id": { "$oid": "xxx" }, "user": { "id": { "$oid": "xxx" }, "firstName": "John", "lastName": "Doe" }, "name": "VERSION 2-A.pdf", "file": "xxx.pdf", "updatedAt": { "$date": "2025-08-20T16:13:21.609Z" }, "createdAt": { "$date": "2025-08-20T16:13:21.609Z" } }, { "_id": { "$oid": "xxx" }, "user": { "id": { "$oid": "xxx" }, "firstName": "Jane", "lastName": "Doe" }, "name": "PDF_Caregiver Connections-2.pdf", "file": "xxx.pdf", "updatedAt": { "$date": "2025-08-20T16:54:59.307Z" }, "createdAt": { "$date": "2025-08-20T16:54:59.307Z" } } ], "createdAt": { "$date": "2024-07-23T18:05:50.052Z" }, "updatedAt": { "$date": "2025-08-20T17:28:39.538Z" }, "__v": 0 } < /code> Когда другой пользователь добавляет новый документ в совершенно отдельное время, это то, что происходит при производстве (но происходит только случайным образом, а не для каждой доставки), он сбрасывает дату созданного в последнюю TimeStamp: < /p> { "_id": { "$oid": "xxx" }, ... "documents": [ { "_id": { "$oid": "xxx" }, "user": { "id": { "$oid": "xxx" }, "firstName": "JOE", "lastName": "RANTSEVIC" }, "name": "937379JR RC.pdf", "file": "xxx.pdf", "createdAt": { "$date": "2025-08-25T11:51:49.375Z" }, "updatedAt": { "$date": "2025-08-25T11:51:49.375Z" } }, { "_id": { "$oid": "xxx" }, "user": { "id": { "$oid": "xxx" }, "firstName": "ALAN", "lastName": "SALAZR" }, "name": "RP-937379JR-Carrier-Contract.pdf", "file": "xxx.pdf", "createdAt": { "$date": "2025-08-25T11:51:49.375Z" }, "updatedAt": { "$date": "2025-08-25T11:51:49.375Z" } } ], "createdAt": { "$date": "2025-08-25T11:15:00.627Z" }, "updatedAt": { "$date": "2025-08-25T15:09:36.155Z" }, "__v": 0 } [/code] Пожалуйста, помогите! Подробнее здесь: [url]https://stackoverflow.com/questions/79753816/mongodb-push-each-onto-array-is-resetting-createdat-date-for-all-subdocuments[/url]