2012-03-04 4 views
0

등급에 따라 분류 된 기사가 있습니다. .sort({ rating : -1 })일부 문서가 MongoDB에서 키를 놓칠 때 정렬 방법?

나는 등급이없는 기사가 많습니다 (DB 측면에는 등급 키조차 없음).

1 1 0.89 0.7 0.5 0.2 0.1 0 0 0 0 0 no_key no_key no_key no_key no_key no_key... 

하지만, 내가 no_key 해당 계정에 걸릴 싶습니다 : 나는 기사를 정렬 할 때 프런트 엔드, 나는 지금이 순서를 1.

0.5의 속도로 보여 0보다 0.5 등급입니다 (이전 분류에서 더 낮음). 나는 0.5에 의해 등급이 지정되지 않은 기사의 누락 평가 키를 입력해야 할 피하려고

1 1 0.89 0.7 0.5 no_key no_key no_key no_key no_key no_key... 0.2 0.1 0 0 0 0 0 

: 그래서, 나는 이런 식으로 뭔가를하고 싶습니다.

트릭이 있습니까? 어떤 아이디어?

+0

죄송합니다 지금 몽고이드. – Hartator

답변

3

그래서,이 세 가지 별도의 쿼리가 필요하지만 집계 프레임 워크 (http://www.mongodb.org/display/DOCS/Aggregation+Framework)이 나올 때까지, 아마 가장 좋은 방법 : 사실 나는 그와 사용에 약간의 프로토 타입을 가지고, 그것에 대해

> db.test.save({rating:1}); 
> db.test.save({rating:2}); 
> db.test.save({rating:3}); 
> db.test.save({rating:4}); 
> db.test.save({rating:0.5}); 
> db.test.save({rating:0}); 
> db.test.save({rating:0}); 
> db.test.save({rating:0}); 
> db.test.save({rating:-1}); 
> db.test.save({}); 
> db.test.save({}); 
> db.test.save({}); 
> db.test.find({rating:{$gte:.5}}).sort({rating:-1}); 
{ "_id" : ObjectId("4f52c707621918e231bc55da"), "rating" : 4 } 
{ "_id" : ObjectId("4f52c705621918e231bc55d9"), "rating" : 3 } 
{ "_id" : ObjectId("4f52c703621918e231bc55d8"), "rating" : 2 } 
{ "_id" : ObjectId("4f52c700621918e231bc55d7"), "rating" : 1 } 
{ "_id" : ObjectId("4f52c70b621918e231bc55db"), "rating" : 0.5 } 
> db.test.find({rating:{$exists:false}}); 
{ "_id" : ObjectId("4f52c718621918e231bc55e0") } 
{ "_id" : ObjectId("4f52c719621918e231bc55e1") } 
{ "_id" : ObjectId("4f52c71a621918e231bc55e2") } 
> db.test.find({rating:{$lt:.5}}).sort({rating:-1}); 
{ "_id" : ObjectId("4f52c70e621918e231bc55dc"), "rating" : 0 } 
{ "_id" : ObjectId("4f52c712621918e231bc55dd"), "rating" : 0 } 
{ "_id" : ObjectId("4f52c712621918e231bc55de"), "rating" : 0 } 
{ "_id" : ObjectId("4f52c714621918e231bc55df"), "rating" : -1 } 
관련 문제