MongoDB的。如何通过嵌套数组属性过滤文档?

时间:2018-02-06 15:40:29

标签: node.js mongodb mongoose

我有以下架构:

var ParagraphsSchema = new Schema({
originalText: String,
suggestions: [{
    text: String,
    is_approved: { type: Boolean, default: false }
  }]
});

任务可以获得所有建议未获批准的段落 (suggestion.is_approved = false)

我已经尝试过像

这样的事情了
Paragraph.find({ 'suggestions.is_approved': { $all: [false] })

Paragraph.find({'suggestions.is_approved': { $all: {"$elemMatch": false} } })

但它们似乎都不起作用。

显而易见的方法是添加" is_approved"属性到段落模式,但这会使数据变得多余并使代码难以维护,这就是我想避免它的原因。

我使用MongoDB == 3.6.2和Mongoose == 5.0.3

1 个答案:

答案 0 :(得分:0)

所以,我找到了适用于我的解决方案(感谢@ Veeram在评论中的回答)。 这是:

Paragraph.find({ 
       suggestions: { $gt: [] }, 
      'suggestions.is_approved':  { $ne: true } 
})

我添加了suggestions: { $gt: [] }以删除其中的数组为空的段落。