假設我有一個Lesson架構,它包含一組question子檔案。我將如何獲得那些標記為已完成但陣列中的所有問題都有的課程isDeleted: true
我想到了類似的東西
Lesson.find({ isComplete: true, 'questions.isDeleted': true })
但如果至少有一個問題被洗掉,就會得到教訓。我將如何斷言所有問題的條件?
uj5u.com熱心網友回復:
您不能使用 ,dot notation因為它會使陣列變平,您可以做的是使用$expr,這允許使用aggregation operators,例如$reduce。
現在我們可以遍歷陣列并查看是否所有檔案都滿足條件,如下所示:
db.collection.find({
isComplete: true,
$expr: {
$eq: [
{
$reduce: {
input: "$questions",
initialValue: 0,
in: {
$sum: [
"$$value",
{
$cond: [
{
$ne: [
"$$this.isDeleted",
true
]
},
1,
0
]
}
]
}
}
},
0
]
}
})
蒙戈游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/378962.html
標籤:javascript MongoDB 猫鼬
