When stopping a service managed by Upstart, it uses a default kill timeout of 5 seconds. It sends the service a TERM signal, and if it doesn't stop in 5 seconds it does a hard stop with the KILL signal. 5 seconds is often not enough time for MongoDB to stop (this is often the case for us). It's probably worthwhile to override the default in the packaged /etc/init/mongodb.conf and set it to several minutes or indefinite to be safe.
Here's info on kill timeout in the Upstart docs:
http://upstart.ubuntu.com/cookbook/#kill-timeout