Используя django-mongodb, как отсортировать по убыванию ограниченную коллекцию? - PullRequest
2 голосов
/ 20 февраля 2012

У этой модели, класса, представляющего ограниченную коллекцию на mongodb:

class Event(models.Model):
   objects = MongoDBManager()
   create_at = models.DateTimeField(auto_now_add=True)
   obj = BlobField()
   class MongoMeta:
      capped = True
      collection_size = 1000*1024*1024

Что можно использовать для получения документов в обратном порядке их вставки?

Ответы [ 3 ]

0 голосов
/ 20 февраля 2012
  • У нас не было никаких тестов для поддержки ограниченного сбора, поэтому он был сломан до сих пор. Я только что исправил это, пожалуйста, используйте ветку master нашего Git-репозитория , чтобы получить рабочую версию.
  • Обратно-естественный порядок еще не реализован. Я открыл ошибку https://github.com/django-nonrel/mongodb-engine/issues/106, патчи приветствуются!
0 голосов
/ 21 февраля 2012

Это временное решение на уровне пимонго, не уровень django-mongodb:

from django.db import connections
import pymongo

conn = connections['default']
events_col = conn.get_collection('base_event')
events = events_col.find().sort('create_at', pymongo.DESCENDING)
0 голосов
/ 20 февраля 2012

Я не питон, но могу сказать, что ограниченные коллекции Natural Order - это порядок вставки. Поэтому вы можете просто сделать это на языке Python, чтобы получить обратный порядок:

db.cappedCollection.find().sort({$natural:-1})

Немного поиска в Google говорит мне, что в python это выглядит примерно так:

 mongodb.cappedcol.find().sort('$natural',-1)

Или:

 mongodb.cappedcol.find().sort('$natural', pymongo.DESCENDING)
...