Database

[{"string":"class.chapter.1.topic.10"},{"string":"class.chapter.2.topic.3"},{"string":"class.chapter.1.topic.12"},{"string":"class.chapter.1.topic.1"}]

Query

db.collection.aggregate([{"$project":{string:"$string",chapter_num:{"$toInt":{$arrayElemAt:[{$split:["$string","."]},2]}},topic_num:{"$toInt":{$arrayElemAt:[{$split:["$string","."]},4]}}}},{$sort:{chapter_num:1,topic_num:1}},{"$project":{string:"$string"}}])

Result