Поскольку GraphQL не использует скаляр DateTime, я решил преобразовать все поля в моих коллекциях баз данных MongoDB, имеющих тип DateTime, в Integer, представляющий DateTime в виде миллисекунд.У меня есть около 8 000+ документов, которые необходимо изменить, и я создал сценарий для выполнения этой работы.
Сценарий должен был создать новое поле publid, целочисленное скалярное значение, соответствующее полю «опубликовано».,Когда я загрузил свой сценарий, все документы были перезаписаны, оставив только поле DateTime - хотя, как я и предполагал, в миллисекундах - но все остальные поля, такие как «title», «image», «body», «субтитры », включая другие типы DateTime, такие как« измененный »и« созданный »и т. д. были удалены.
Ниже приведен скрипт, который я запустил:
db.Post.find().forEach(function(myDoc) {
let currentDate = new Date(myDoc.published);
print(currentDate);
db.Post.update(
{ published: currentDate },
{ publishedID: currentDate.valueOf() }
);
});
Я надеялся, что ISO DateTimesРанее установленное для «опубликованного» поля было бы просто преобразовано в миллисекунды, я понял.Но я не хотел, чтобы все остальное в документе было удалено.