Database
[{"_id":{"$oid":"664baf560b9539e48fbc6ed1"},"name":"first assignment","next":{"$oid":"664baf620b9539e48fbc6ed2"},"preview":null,"date":{"$date":"2024-04-20T10:00:00.000Z"}},{"_id":{"$oid":"664baf620b9539e48fbc6ed2"},"name":"second assignment","next":{"$oid":"664baf6d0b9539e48fbc6ed3"},"preview":{"$oid":"664baf560b9539e48fbc6ed1"},"date":{"$date":"2024-04-21T10:00:00.000Z"}},{"_id":{"$oid":"664baf6d0b9539e48fbc6ed3"},"name":"third assignment","next":{"$oid":"664baf8d0b9539e48fbc6ed4"},"preview":{"$oid":"664baf620b9539e48fbc6ed2"},"date":{"$date":"2024-04-22T10:00:00.000Z"}},{"_id":{"$oid":"664baf8d0b9539e48fbc6ed4"},"name":"fourth assignment","next":null,"preview":{"$oid":"664baf6d0b9539e48fbc6ed3"},"date":{"$date":"2024-04-23T10:00:00.000Z"},"otherField":"other value"}]
Query
db.collection.aggregate([/** find fourth doc*/{$match:{_id:ObjectId("664baf8d0b9539e48fbc6ed4")}},{/** can be combined with the next stage;* separate is easier to read & debug*/$project:{_id:0,existing:{/** references id of existing fourth*/_id:"$_id",/** id of new fifth to be created*/next:ObjectId("664baf8d0b9539e48fbc6ed5")},new_doc:{$mergeObjects:["$$ROOT",{/** id of new fifth to be created*/_id:ObjectId("664baf8d0b9539e48fbc6ed5"),/** name for fifth here*/name:"fifth",/** id of existing fourth*/preview:ObjectId("664baf8d0b9539e48fbc6ed4"),date:"$$NOW"}]}}},{$project:{write_objects:["$existing","$new_doc"]}},{$unwind:"$write_objects"},{$replaceWith:"$write_objects"},{$merge:"collection"}])