2015-06-29 6 views
2

Я пытаюсь объединить group в MongoDB.как заполнить группу в mongoengine python

Мы используем Python, django, Rest framework и Mongoengine.

Это как моя модель выглядит следующим образом:

class TestSnapshot(EmbeddedDocument): 
    identifier = StringField() 
name = StringField() 
created = DateTimeField(
    default = datetime.datetime.now) 

class Test(Document): 
    agreement = ReferenceField(Agreement) 
history = ListField(EmbeddedDocumentField(TestSnapshot)) 
created = DateTimeField(
    default = datetime.datetime.now) 

На мой взгляд:

test = models.Test.objects.filter(agreement__in = agreements).aggregate([{ 
    "$unwind": "$created" 
}, { 
    "$group": { 
    "_id": "$created" 
    } 
}]) 
print test 

Но я трекбек так:

OperationFailure: command SON([('aggregate', u 'test'), ('pipeline', [{ 
    '$match': { 
     'agreement': { 
      '$in': [ObjectId('558b150a89f4ad3f33ebb8ae')] 
     } 
    } 
    }, 
    [{ 
    '$unwind': '$created' 
    }, { 
    '$group': { 
     '_id': '$created' 
    } 
    }] 
]), ('cursor', {})]) on namespace noq.$cmd failed: exception: pipeline element 1 is not an object 

Что я делаю неправильно ? Я новичок в python с mongo. Спасибо за помощь :)

С наилучшими пожеланиями, Джонни

ответ

2

Я решил эту проблему, я делаю агрегат неправильно.

models.Test.objects.filter(agreement__in = agreements).aggregate(
    {"$group": { "_id": "$created" }} 
) 

равно спасибо :)

+1

Вы пытались список внутри агрегата. Это была ошибка. Вы можете дать широкий ответ, если сможете. Это поможет другим. – Jay