如何使 .populate 排除空值?

Posted

技术标签:

【中文标题】如何使 .populate 排除空值?【英文标题】:How to make .populate exclude null values? 【发布时间】:2017-03-02 20:57:57 【问题描述】:

有没有办法排除等于 null 的 Lessons.lesson_id?我从以前的答案中得到了以下内容,但它仍然给出了为空的课程.lesson_id

module.exports.getClasses = function(id, callback)
    Class.findById(id)
    .populate(
        path: 'lessons.lesson_id',
        model: 'Lesson', $ne: null
    ).exec(callback)


var classSchema = new Schema(
    title:  type: String, required: true ,
    lessons: [
        _id: false,
        lesson_id: type: mongoose.Schema.Types.ObjectId, ref: 'Lesson'
    ],
);

我正试图阻止带有 null 的课程 ID 出现

 _id: 58090,
  title: 'vcvc',
  __v: 0,
  lessons: [  lesson_id: null ,  lesson_id: [Object]  ] 

【问题讨论】:

您是否希望没有任何课程没有空课?我不清楚您期望的查询结果是什么。 对不起,我应该更清楚。如果一个教训 = null,那么我不希望它被填充。 【参考方案1】:

所以您的 ClassSchema 是一个触发点,我想您可能会发现这会根据您的要求更好地工作:

var classSchema = new Schema(
    title:  type: String, required: true ,
    lessons: [type: mongoose.Schema.Types.ObjectId, ref: 'Lesson'],
);

【讨论】:

以上是关于如何使 .populate 排除空值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Mongoose 填充查询中排除空值

oracle的full outer join如何排除掉空值

MySQL中如何排除null和空字符串的条件

在 ms 访问中排除空值的选择查询是啥

猫鼬如何从填充中排除_id

JavaScriptSerializer 可以排除具有空值/默认值的属性吗?