finding objectIds between two given values in mongodb and nodejs

I am creaing schemas similar to newsposts with an option for users to like and dislike them. Here are the schemas for same

    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);

In order to retreive the ratingsgiven by a particular user having given a set of newsposts, I tried,

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){
    })
})

This query returns empty list no matter what. I doubt whether $gte and $lte be used to compare objectIds. Am I right? How can I which posts a user has liked/disliked in a given set of newsposts?

Yes, ObjectIds can be queried with range queries like $gt/$lt etc. Can you post the exact values being used for news[0]._id and news.slice(-1)[0]._id that are giving you the empty result?

However, i'm not sure that $gt/$lt is what you want here. It seems like what you need to do is extract the _ids of the news items, and then use that in a $in filter in your query on ratesm.