0

私はニュース投稿に似たスキーマを作成しており、ユーザーが好き嫌いを選択できるようにしています。ここに同じスキーマがあります

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

特定のユーザーが一連のニュース投稿に与えた評価を取得するために、次のことを試しました。

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

このクエリは、何があっても空のリストを返します。$gte と $lte を使用して objectId を比較するかどうかは疑問です。私は正しいですか?特定の一連のニュース投稿で、ユーザーがどの投稿を高く評価/低く評価したかを知るにはどうすればよいですか?

4

1 に答える 1

1

はい、ObjectId は $gt/$lt などの範囲クエリでクエリできます。使用されている正確な値を投稿してnews[0]._idnews.slice(-1)[0]._id空の結果が得られますか?

ただし、 $gt/$lt がここで必要なものかどうかはわかりません。あなたがする必要がある_idのは、ニュース項目の を抽出し、それを$inのクエリのフィルターで使用することratesmです。

于 2012-05-18T15:39:11.467 に答える