【发布时间】:2020-09-08 09:25:22
【问题描述】:
我有一个名为选举的集合,在选举模式中有一个名为 votes 的嵌套数组。我正在尝试按 id 查询选举,并通过 userId 属性过滤嵌套的投票对象。我希望始终返回父选举对象,如果当前用户没有在选举中投票,votes 属性应该是一个空数组。
这是我的查询:
Election.findOne({
_id: electionId,
'votes.userId': userId
})
.exec()
问题在于,如果userId 没有任何投票,则也不会返回父 Election 对象。有什么方法可以过滤 votes 属性,但也不需要匹配父选举对象。
我来自 sql 的背景,在 Sequelize 中,我将如何做我想做的事情:
models.Election.findOne({
where: {
id: electionId
}
include: {
model: models.Vote,
where: {
userId
},
required: false
}
})
【问题讨论】: