[MONGODB] 몽고 복잡한 정렬?
MONGODB몽고 복잡한 정렬?
여러 개의 필드로하여 MongoDB의 쿼리를 정렬하는 방법을 알고, 예를 들어, db.coll.find () 종류. ({A : 1, B를 : -1}).
종류 I 사용자 정의 함수와 수; 예를 들어, 정수 a와 b (a-b) 사이의 차이에 의해, A 및 B에서 상정?
감사!
해결법
-
==============================
1.업데이트 :이 답변은 구식 인 것 같습니다; 그 사용자 지정 정렬이 더 많거나 적은 이전 정렬에 입력 문서를 변환하는 집계 파이프 라인의 $ 프로젝트 기능을 사용하여 얻을 수있는 것 같다. 아리의 대답 @ 참조하십시오.
업데이트 :이 답변은 구식 인 것 같습니다; 그 사용자 지정 정렬이 더 많거나 적은 이전 정렬에 입력 문서를 변환하는 집계 파이프 라인의 $ 프로젝트 기능을 사용하여 얻을 수있는 것 같다. 아리의 대답 @ 참조하십시오.
나는이 직접 가능하다고 생각하지 않는다; 정렬 문서는 확실히 사용자 정의 비교 기능을 제공 할 수있는 방법을 언급하지 않습니다.
당신은 아마 클라이언트의 정렬을하고 오프 최고,하지만 당신이 정말로 서버에 그것을 결정하는 경우에 당신은 당신의 클라이언트 경우 (서버의 종류를 실행하는 데 주선) (db.eval을 사용할 수 있습니다 )를 지원합니다.
서버 측 정렬 :
db.eval(function() { return db.scratch.find().toArray().sort(function(doc1, doc2) { return doc1.a - doc2.a }) });
해당하는 클라이언트 측 정렬 대 :
db.scratch.find().toArray().sort(function(doc1, doc2) { return doc1.a - doc2.b });
이 집계 파이프 라인을 통해하고 $ ORDERBY 운영자에 의해 정렬 할 수도 있음을 참고 (즉 .sort에 추가 ()) 그러나 어느 쪽도 이러한 방법으로 당신이 중 하나를 사용자 지정 정렬 기능을 제공 할 수 없습니다.
-
==============================
2.이이 우연히 내가 생각 해낸 것입니다 :
이이 우연히 내가 생각 해낸 것입니다 :
db.collection.aggregate([ { $project: { difference: { $subtract: ["$a", "$b"] } // Add other keys in here as necessary } }, { $sort: { difference: -1 } } ])
-
==============================
3.왜이 작업 및 종류와 필드를 생성하지?
왜이 작업 및 종류와 필드를 생성하지?
from https://stackoverflow.com/questions/3212919/mongo-complex-sorting by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 MongoDB의 문서에서 이중으로 중첩 된 배열에서 요소를 제거합니다. (0) | 2019.12.05 |
---|---|
[MONGODB] MongoDB를 배열에있는 모든 요소의 필드 삭제 [중복] (0) | 2019.12.05 |
[MONGODB] 어떻게 총 수를 얻기 위해 MongoDB를에서 합계를 집계하는? (0) | 2019.12.05 |
[MONGODB] 와 MongoDB를 암호 "@"그 안에 (0) | 2019.12.05 |
[MONGODB] 몽구스 findByIdAndUpdate 올바른 모델을 반환하지 (0) | 2019.12.05 |