【问题标题】:finding objectIds between two given values in mongodb and nodejs在 mongodb 和 nodejs 中查找两个给定值之间的 objectIds
【发布时间】:2012-05-18 23:39:11
【问题描述】:

我正在创建类似于新闻帖子的模式,用户可以选择喜欢和不喜欢它们。 以下是相同的架构

    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 是否用于比较 objectIds。我对吗?我如何知道用户喜欢/不喜欢给定一组新闻帖子中的哪些帖子?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    是的,可以使用 $gt/$lt 等范围查询来查询 ObjectId。您能否发布用于 news[0]._idnews.slice(-1)[0]._id 的确切值,这些值会为您提供空结果?

    但是,我不确定 $gt/$lt 是您想要的。看来您需要做的是提取新闻项目的_ids,然后在ratesm 的查询中的$in 过滤器中使用它。

    【讨论】:

      猜你喜欢
      • 2022-11-03
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 2021-07-25
      相关资源
      最近更新 更多