Hello everyone!
I successfully updated the movies collection, however I get an error when I run the test. Thanks for any help!
This is the error:
This is the code:
(async () => {
try {
const host = process.env.MFLIX_DB_URI
const client = await MongoClient.connect(host, { useNewUrlParser: true })
const mflix = client.db(process.env.MFLIX_NS)
const movies = mflix.collection("movies")
// TODO: Create the proper predicate and projection
// add a predicate that checks that the `lastupdated` field exists, and then
// check that its type is a string
// a projection is not required, but may help reduce the amount of data sent
// over the wire!
const predicate = { lastupdated: { $exists: true, $type: "string" } }
const projection = { lastupdated: true }
const cursor = await movies.find(predicate, projection).toArray()
const moviesToMigrate = cursor.map(({ _id, lastupdated }) => ({
updateOne: {
filter: { _id: ObjectId(_id) },
update: {
$set: { lastupdated: Date.parse(lastupdated) },
},
},
}))
console.log(
"\x1b[32m",
`Found ${moviesToMigrate.length} documents to update`,
)
// TODO: Complete the BulkWrite statement below
const { modifiedCount } = await movies.bulkWrite(moviesToMigrate)
console.log("\x1b[32m", `${modifiedCount} documents updated`)
client.close()
process.exit(0)
} catch (e) {
if (
e instanceof MongoError &&
e.message.slice(0, "Invalid Operation".length) === "Invalid Operation"
) {
console.log("\x1b[32m", "No documents to update")
} else {
console.error("\x1b[31m", `Error during migration, ${e}`)
}
process.exit(1)
}
})()