我有以下架构:
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
答案 0 :(得分:0)
所以,我找到了适用于我的解决方案(感谢@ Veeram在评论中的回答)。 这是:
Paragraph.find({
suggestions: { $gt: [] },
'suggestions.is_approved': { $ne: true }
})
我添加了suggestions: { $gt: [] }
以删除其中的数组为空的段落。