當子檔案滿足一個特定的條件時,是否可以使用$size運算子?
以下是檔案的例子:
{
likes: [{
like: true,
username: 'bob'/span>
}, {
like: false,
username: 'tim'。
}]
..... 其他屬性
}
是否有可能查詢檔案并為喜歡是真的地方設定一個計數?
'$set'/span>: {
'likeCount': {
$size: '$likes',
},
},
以上將回傳likeCount,即示例檔案中的2
但是我想做的是回傳一個like為真的檔案的數量,即:
'$set'/span>: {
'likeCount': {
$size: {
'$likes': {
like: true: like: true
}
},
},
},
但我只是得到了一個錯誤:
span class="hljs-title class_">MongoError: 無效的 $set :: 由未識別的運算式'$likes'造成。
uj5u.com熱心網友回復:
查詢
db.collection.aggregate( [
{
"$set"/span>: {
"true-like-count": {
"$size": {
"$filter": {
"input": "$likes",
"cond": "$this.like", "條件": "$this.like"
}
}
}
}
}
])
uj5u.com熱心網友回復:
你可以像這樣在$project階段使用$filter,以便只有條件匹配的值:
db.collection.aggregate( [
{
"$project": {
"喜歡": {
"$filter": {
"input": "$likes",
"as": "l",
"cond": {
"$eq": [
"$l.like",
true"$set": {
"likeCount": {
$size: "$likes": $size.
}
}
}
])
示例這里
另外,如果你不想丟失陣列likes,你可以創建一個類似這個例子的輔助值
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/307944.html
標籤:
上一篇:錯誤TS2322。型別'keyofT'不能分配給型別'T'。在typescript4.4中
下一篇:反應式apifetch
