5

MongoDBのドキュメントaggregateでは、呼び出しの結果を並べ替えるには、次のように辞書/オブジェクトを指定する必要があることが示唆されているようです。

db.users.aggregate(
    { $sort : { age : -1, posts: 1 } }
);

これは、 でソートしてから でソートすることになっていageますposts

postsで並べ替えてからで並べ替えたい場合はどうすればよいageですか? おそらくこれはJSオブジェクトのプロパティであるため、キーの順序を変更しても効果がないようです。言い換えれば、ソートは常にキーの字句順序に従っているように見えますが、これは設計上の選択としてはかなり奇妙に思えます...

何か不足していますか?ソートするキーの順序付きリストを指定する方法はありますか?

4

1 に答える 1

7

ドキュメントから:

Python辞書は順序を維持しないため、使用する必要があるSONcollections.OrderedDict、明示的な順序付けが必要な場合、たとえば「$ sort」

from bson.son import SON
db.users.aggregate([
    {"$sort": SON([("posts", 1), ("age", -1)])}
])
于 2013-04-07T16:17:56.710 に答える