PyMongo에서 .sort 사용


108

PyMongo를 사용하여 다음과 같이 '번호'및 '날짜'필드로 정렬 된 개체를 검색하려고 할 때 :

db.test.find({"number": {"$gt": 1}}).sort({"number": 1, "date": -1})

이 오류가 발생합니다.

TypeError: if no direction is specified, key_or_list must be an instance of list

내 정렬 쿼리에 어떤 문제가 있습니까?

답변:


205

sort 키 방향 쌍의 목록이어야합니다. 즉

db.test.find({"number": {"$gt": 1}}).sort([("number", 1), ("date", -1)])

이것이 목록이어야하는 이유는 인수의 순서가 중요하고 dictPython <3.6에서 순서가 지정되지 않기 때문입니다.


29
이것이 파이썬에서 목록 인 이유는 sort()문제와 딕셔너리 에 대한 인수의 순서가 파이썬에서 정렬되지 않기 때문입니다.
André Laszlo 2011

@ AndréLaszlo는 OrderedDict ()를 사용할 수 있습니까?
zakdances

9
이것은 저에게 많은 연구를 절약했습니다. Little MongoDB Book은 정렬 예에서 잘못된 정보를 제공합니다.
Dogukan Tufekci

4
필드가 하나 뿐인 경우 .sort ( "_ id", 1)
Haris Np

2
python3.6 +에서 dicts는 순서가 지정되어 있으므로 누군가가 그것을 원한다면 일반 mongodb 구문과 일치하도록 pymongo에 풀 요청을 할 가치가 있습니다. 물론 이것은 이전 파이썬 버전에서 pymongo를 실행할 때 작동하지 않을 것입니다.
thiezn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.