2012-09-17 4 views
0

MongoDB 정렬 기능은 꽤 neato입니다. 데이터베이스 자체와 아무 관련이없는 객체 및/또는 배열에서 사용할 수 있습니까? MongoDB의 영감을 배열 필터링 :Node.JS MongoDB 정렬/필터링 기능을 데이터베이스 외부에서 사용할 수 있습니까?

var mongo  = require('mongodb'), 
    Server  = mongo.Server, 
    Db   = mongo.Db, 
    sortingFun = mongo.internalSortFilterFunction(); // By the miracle of imagination, this is a made-up line. 

가, 예를 들어, this awesome little node projectsift가했다. 그러나 더 유사한 도구, 다른 의견 및 병합 및 사라지는 프로젝트가 있습니다.

이 인기의 고려, MongoDB 꽤 아마 놀아거야. 그 이유는, 꽤 비슷한 대신에 정확히 비슷한 추가 보너스를 추가, 노드 개체 mongodb 내의 특정 개체/모델/함수가 require('mongodb')에서 연결될 수 있는지 궁금 해서요. 사용자 지정 개체/배열.

답변

0

소팅하지 클라이언트는 몽고 서버에서 이루어집니다. 특별히 빠른 것은 아니며 큰 컬렉션은 미리 정렬해야하지만 또 다른 문제입니다.

몽고 서버 AFAIK C++로 작성하고 BSON라는 JS 엔진 별도 지정 형식을 사용한다.

그래서 터무니 기능이 될 것입니다 자바 스크립트에 대한 클라이언트에 어떤 종류의 구현이없는 경우, 당신은 서버 종류를 사용할 수 없습니다.

편집 : 당신이 정말 정말 종류를 사용하려는 경우, 성능은 저주, 당신은 효과적으로 몽고 컬렉션에서 BSON로 변환, JS는 DB에 개체를 삽입 할 수 있습니다. 그런 다음 정렬하여 DB에서 가져옵니다. 해당 기능을 호출 할 때마다 색인 등을 다시 작성해야합니다. MongoDB를도 (제한 어딘가에 1000 주변에있는 내가 믿는)

PS 큰 컬렉션 산세 지수에 대한 정렬 거부합니다. 나는 근원을 읽지 않았다. 나는 JS realtime, MongoDB의 sort esp의 속도와 일치하는 인덱스없는 정렬을 상상할 수 없다. 배포 될 때 (샤드). 그러나 node.js 모듈을 C++로 작성할 수 있으며, BSON이 V8 JS 객체와 충분히 유사하다면 그렇게 생각하지 않을 수도 있습니다. 아마도 JS에서 다시 구현하는 것보다 큰 속도 증가가 아닐 것이기 때문에 아마 그 길을 따라 가지 않을 것입니다. 다시 구현하고 유지하는 것이 훨씬 쉬울 것입니다.

+0

감사합니다. 명확한. Mongo 질의 후 특정 작은 콜렉션을 가지고 있고 그것을 몇 가지 다른 방법으로 필터링하고 싶을 때를 제외하고 JS 기반의 정렬은 편리하고 MongoDB- 정렬 - 클론 (예 : 'sift')을 사용하면 먼저 MongoDB에 줄 필터 객체를 사용하십시오. – Redsandro

+0

편집 마지막 줄 : 모든 정렬 가능 필드를 인덱싱해야합니까? 모든 필터링 가능한 입력란에 대해 색인을 생성해야합니까? – Redsandro

+1

@Redsandro 예, 메모리 내 정렬은 JS에서 유용 할 수 있습니다. 하지만 mongodb에서 제공하는 것은 거의 없습니다. Mongo의 JS는 사실상 클라이언트입니다. 인덱스의 정렬 및 필터 관련 : 정렬 가능한 필드/너무 많은 문서가있을 때 인덱싱해야하지만 인덱싱해야합니다. 나는 필터 된 필드에 똑같이 적용되지 않는다고 생각한다. (필자는 결코 필터를 사용하지 않았지만, 필자가 사용하는 $와 같은 것으로 매핑된다고 생각한다.) 꼭 색인을 달아서 내가하는 일입니다. – sapht

관련 문제