2012-05-17 2 views
0

사용자가 좋아하고 싫어할 수있는 옵션이있는 newsposts와 비슷한 스키마를 작성하고 있습니다. 여기mongodb와 nodejs에서 주어진 두 값 사이에 objectIds를 찾는다.

newsm.find({tag:tag[req.params.tag_id]},[],{ sort:{created:-1},limit: buffer+1 },function(err,news){  
    ratesm.find({ 
     client:client._id, 
     newsid:{$lte:news[0]._id,$gte:news.slice(-1)[0]._id} 
     }, 
     function(err,ratings){ 
    }) 
}) 

이 쿼리는 상관없이 빈 목록을 반환하지, 내가 노력의 newsposts 세트를 제공 한 특정 사용자가 ratingsgiven retreive하기 위해 같은

Client= new mongoose.Schema({ 
     ip:String 
    }) 

    Rates = new mongoose.Schema({ 
     client:ObjectId, 
     newsid:ObjectId, 
     rate:Number 
    }) 

    News = new mongoose.Schema({ 
     title: String, 
     body: String, 
     likes:{type:Number,default:0}, 
     dislikes:{type:Number,default:0}, 
     created:Date, 
     // tag:String, 
     client:ObjectId, 
     tag:String, 
     ff:{type:Number,default:20} 
    }); 

var newsm=mongoose.model('News', News); 
var clientm=mongoose.model('Client', Client); 
var ratesm=mongoose.model('Rates', Rates); 

에 대한 스키마입니다. $ gte와 $ lte가 objectIds를 비교하는 데 사용되는지는 의심 스럽습니다. 내가 맞습니까? 사용자가 주어진 신문에 좋아요/싫어하는 소식은 어떻게 표시합니까?

답변

1

예, $ gt/$ lt 등의 범위 검색어로 ObjectIds를 쿼리 할 수 ​​있습니다. news[0]._idnews.slice(-1)[0]._id에 사용되는 정확한 값을 게시하여 빈 결과를 제공 할 수 있습니까?

그러나 나는 $ gt/$ lt가 당신이 원하는 것을 확신하지 못합니다. 당신이해야 할 일은 _id의 뉴스 항목을 추출한 다음 ratesm에 대한 쿼리의 $in 필터에 사용하는 것입니다.

관련 문제