2
class Example(Document):
    comments =  ListField(field=EmbeddedDocumentField('Comment'), db_field='z')

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

Comment EmbeddedDocument'date でコメント listfield の結果を元に戻すにはどうすればよいですか? 私の間違ったコード..のような..

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

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

4

2 に答える 2

1

mongoDB では、find ステートメントに一致する項目を返します。そうすること:

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

Exampleオブジェクトを最新のコメント日付で並べ替えているだけです。クエリ言語は照合用であるため、返されるリストの結果/順序は変更されません。順序を確認する必要がある場合は、保存時にリストが並べ替えられるようにするSortedListFieldを使用できます。ただし、リスト全体を設定するため、競合状態が発生する可能性があります。演算子が最適ですが、$pushコメントがスタックになり、最も古いものが最後に追加されることを意味します。

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

于 2012-03-05T08:18:36.377 に答える
0

試してみてください:

Example.objects().order_by('-comments.date')
于 2012-03-03T09:03:07.210 に答える