我曾經有兩個過濾器來從我的 mongoDB 中獲取數據,但是考慮到它必須對 DB 進行兩次查詢,我認為它效率不高。 filter = bson.M{ "$and": []bson.M{ {"partnerA.id": id}, {"unlocked": false}, {"deletedAt": nil}, }, } filter = bson.M{ "$and": []bson.M{ {"partnerB.id": id}, {"unlocked": false}, {"deletedAt": nil}, }, }我嘗試使用我找到的這個解決方案將它們組合起來,并使用這個過濾器: filter := bson.M{ "$and": []bson.M{ {"partnerA.id": id}, {"unlocked": false}, {"deletedAt": nil}, }, "$or": bson.A{ bson.M{"$and": []bson.M{ {"partnerB.id": id}, {"unlocked": false}, {"deletedAt": nil}, }}, }, }但是它不起作用,我找不到解決方案。有沒有人看到這個問題?
1 回答

LEATH
TA貢獻1936條經驗 獲得超7個贊
我認為您正在嘗試將這兩個查詢與OR運算符結合起來。另一件事,我看到兩者之間有兩個類似的子句,它是"unlocked": false和"deletedAt": nil。
你可以有更短的查詢,如下所示:
filter := bson.M{
"$or": []bson.M{
{"partnerA.id": id},
{"partnerB.id": id},
},
"unlocked": false,
"deletedAt": nil,
}
更新#1
如果((partnerA.id = id and partnerA.unlocked = true)或(partnerB.id = id and partnerB.unlocked = true))我只返回值的新查詢怎么樣?
filter := bson.M{
"$or": []bson.M{
{
"partnerA.id": id,
"partnerA.unlocked": true,
},
{
"partnerB.id": id,
"partnerB.unlocked": true,
},
},
}
- 1 回答
- 0 關注
- 199 瀏覽
添加回答
舉報
0/150
提交
取消