new_contents: from mongoengine.queryset import QuerySet
  from mongoengine.base import BaseDocument
  from mongoengine.errors import ValidationError
  
  def _get_queryset(cls):
      """Inspired by django.shortcuts.*"""
      if isinstance(cls, QuerySet):
          return cls
      else:
          return cls.objects
  
  def get_document_or_404(cls, *args, **kwargs):
      """
      Uses get() to return an document, or raises a Http404 exception if the document
      does not exist.
  
      cls may be a Document or QuerySet object. All other passed
      arguments and keyword arguments are used in the get() query.
  
      Note: Like with get(), an MultipleObjectsReturned will be raised if more than one
      object is found.
  
      Inspired by django.shortcuts.*
      """
      queryset = _get_queryset(cls)
      try:
          return queryset.get(*args, **kwargs)
      except (queryset._document.DoesNotExist, ValidationError):
          from django.http import Http404
          raise Http404('No %s matches the given query.' % queryset._document._class_name)
  
  def get_list_or_404(cls, *args, **kwargs):
      """
      Uses filter() to return a list of documents, or raise a Http404 exception if
      the list is empty.
  
      cls may be a Document or QuerySet object. All other passed
      arguments and keyword arguments are used in the filter() query.
  
      Inspired by django.shortcuts.*
      """
      queryset = _get_queryset(cls)
      obj_list = list(queryset.filter(*args, **kwargs))
      if not obj_list:
          from django.http import Http404
          raise Http404('No %s matches the given query.' % queryset._document._class_name)
      return obj_list
  
subject: update for mongoengine 0.9+