Search code examples
python-3.xmongoengineflask-mongoengine

Finding the next and previous documents in a MongoEngine query


I would like to get the next and previous documents in a MongoEngine query which is ordered by a property.

query = ImageModel \
            .objects(dataset_id=dataset.id, deleted=False) \
            .order_by('file_name') \
            .all()

images = list(query)
image_index = images.index(image)
image_previous = None if image_index - 1 < 0 else images[image_index - 1].id
image_next = None if image_index + 1 == len(images) else images[image_index + 1].id

This code provided above is my current implementation which is highly inefficient. Does anyone have any ideas?


Solution

  • I'm doing it the following way:

    images = ImageModel.objects(dataset_id=dataset.id, deleted=False)
    pre = images.filter(file_name__lt=image.file_name).order_by('-file_name').first()
    nex = images.filter(file_name__gt=image.file_name).order_by('file_name').first()