Ни одна из этих операций невозможна, но вы можете обойти ее довольно легко, эмулируя доступ к последнему элементу массива с другим полем.Предположим, ваша модель:
class BlogPost(Document):
tags = ListField(StringField())
# other things
Добавить поле last_tag
:
class BlogPost(Document):
tags = ListField(StringField())
last_tag = StringField()
# other things
Затем при обновлении:
BlogPost.objects(id=post.id).update_one(push__tags='nosql', set__last_tag='nosql')
И при запросе:
BlogPost.objects(last_tag='nosql')
Вы захотите убедиться, что last_tag
проиндексирован, и, возможно, также tags
, если вы будете делать запросы также часто.