2012-10-09 2 views
3

삽입의 역순으로 pymongo 컬렉션의 값이 필요한 함수를 구현하고자했습니다.pymongo에 대한 쿼리를 수행하고 삽입 순서의 역순으로 값을 얻는 방법

나는 몇 가지 방법을 생각할 수 있습니다 LIMIT_VAL 변수이고, I는 메모리에 전체 일을 넣고 싶어하지 않기 때문에

cursor = collection.find(skip=collection.count()-LIMIT_VAL,limit=LIMIT_VAL) 
rows = list(cursor).reverse() 

이 방법이 조금 나쁜 것입니다. skip 매개 변수에 -ve 값을 제공하고 싶지 않습니다.

rows = collection.find(sort={'$natural':-1}, limit=LIMIT_VAL) 

또는 난 당신이 정말 자연 정렬 순서에 의존 할 수 here를 참조하십시오. 나는 신뢰할 수있는 방법을 모르는

또는

나는 각 레코드에 order_of_insert라는 값을 삽입하고 내가 삽입 한 방법을 얻을 수 있다는 보장이에 정렬을한다.

나는 이것을 구현하기 전에 어떤 방법이 최선의 방법인지 확인해야했습니다.

답변

1

Mongodb ObjectID는 두 번째까지 정확한 시간 스탬프 정보를 저장합니다. $ natural은이 _id로 정렬합니다. 앱이 동일한 초 내에 문서를 삽입하는 경우 게재 신청서가 모호합니다. $ natural은 컬렉션에 출전 한 경우에만 게재 신청서에 해당합니다. 응용 프로그램이 주로 정확한 삽입 순서를 견딜 수있는 당신이 영원히 지속 데이터를해야하는 경우

  1. 는 컬렉션을 상한없이 $ 자연을 사용합니다.
  2. 정확한 삽입 순서가 필요하고 데이터 세트가 작거나 반영구적 인 경우 컬렉션을 캡핑하고 $ natural sorting을 사용하십시오.
  3. 그렇지 않으면 자신의 타임 스탬프 또는 기타 항목을 정렬해야하는 것처럼 보입니다 필드는 주문을 추적합니다.
관련 문제