2012-03-03 8 views
1
class Example(Document): 
    comments = ListField(field=EmbeddedDocumentField('Comment'), db_field='z') 

class Comment(EmbeddedDocument): 
    comment = StringField() 
    date = DateTimeField() 

Commentfieldのコメント結果をどうやって逆にすることができますか?EmbeddedDocument'date? 私の不正なコードが... Mongoengine .. ListFieldの項目を逆にする

Example.objects().order_by('-comments__date') 

はembeddedDocumentの日付でListFieldをを逆にする方法はあります...のようにありますか? または リストフィールドを逆にしますか?

答えて

1

あなたは、find文でマッチしたアイテムを返します。あなたはただExampleオブジェクトを最新のコメント日付で注文するだけです。あなたはただちにExampleオブジェクトを注文するだけです。照会言語は一致するため、返されるリストの結果/順序は変更されません。オーダーを確実にする必要がある場合は、リストが保存時に確実にソートされるようにSortedListFieldを使用することができます。ただし、リスト全体が設定されるため、競合状態が発生する可能性があります。 $push演算子が最適ですが、コメントがスタックになり、最古のものが最後に追加されることを意味します。

comments独自のコレクションまたはmongoDB 2.2で別のスキーマが必要な場合があります。集約フレームワークを使用して、コメント自体をソートすることができます。

0

あなたは試してみてください:MongoDBので

Example.objects().order_by('-comments.date') 
関連する問題