當$pull操作后欄位變為空時,我使用此代碼取消設定欄位。
{'id': user_id},
[
{
'$set': {
'badges': {
'$filter': {
'input': '$badges',
'cond': {'$ne': ['$$this', badge_id]}
}
}
}
},
{
'$set': {
'badges': {
'$cond': [
{
'$or': [
{'$eq': ['$badges', []]},
{'$eq': ['$badges', None]}
]
},
'$$REMOVE',
'$badges'
]
}
}
}
]
如何做類似的事情,但洗掉檔案而不是欄位?
uj5u.com熱心網友回復:
您可以在第一個之后添加$set波紋管$match而無需第二個$set。
已badges = [] or null or missing(no badges field)洗掉的檔案。
aggregate([
your_first_$set
{"$match":
{"$expr":
{"$not":
[{"$or":
[{"$eq": ["$badges", []]},
{"$eq": ["$badges", null]},
{"$eq": [{"$type": "$badges"}, "missing"]}]}]}}}
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/362983.html
下一篇:按月聚合組并按給定年份匹配
