Manager Russell Slade was desperate to keep the 28-year-old Irishman at Brisbane Road after he scored 13 goals for the O's last season.
Slade told the club website: "Mooney enjoyed his best season with us last year and scored some really important goals. If he hadn't got injured towards the end of the year I'm sure he would have scored a few more too.
"It's great to get him tied down with a new contract as, for the way we play, he fits perfectly into the make-up of the team."
Mooney joined the O's from Reading in 2011 and has scored 21 goals in 84 appearances in all competitions.