【问题标题】:Query populated document with mongoose使用 mongoose 查询填充的文档
【发布时间】:2016-06-18 13:03:15
【问题描述】:

我有以下 mongodb/mongoose 数据模型::

var UserSchema = new Schema({
     name: String
   , roles: [] // admin or client
   /* others object */
});

mongoose.model('User', UserSchema);

var ReviewSchema = new Schema({
    title: String
    , user: {
         type: Schema.ObjectId,
         ref: 'User'
    }
});

mongoose.model('Review', ReviewSchema);

现在我想获取用户角色为 admin 的所有 review。我尝试了以下方法:

Review
  .find( { 'user.roles': 'admin' } )
  .populate('user')
  .exec(function(err, review) {
     console.log("review : ", review); // null
  });

注意: "mongoose": "^4.2.9",

我该如何解决这个问题?提前致谢。

【问题讨论】:

  • 您没有指定您使用的是哪个版本的猫鼬。当前文档说使用Schema.Types.ObjectId,而不是Schema.ObjectId

标签: node.js mongodb mongoose-populate


【解决方案1】:

希望这段代码可以解决你的问题

Review.find()
.populate('user', null, { roles:"admin" })
.exec(function (err, review) {
    if(err) {
        console.log(err);
        res.json(err);
    }else {
        var review = review.filter(function (review) {
                    return review.user !== null;
                 }).pop();
       console.log(review);          
       res.json(review);
   }
});

【讨论】:

    猜你喜欢
    • 2014-08-06
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 2021-03-31
    • 2019-01-08
    • 2014-08-16
    • 2013-07-06
    • 2021-03-03
    相关资源
    最近更新 更多