在MongoDB 中,複雜的查詢篩選器可能涉及巢狀邏輯運算符,例如OR 和AND。 mongo-go-driver 允許您以程式設計方式建構這些濾鏡。
使用巢狀邏輯運算子時,了解驅動程式所需的結構至關重要。例如,$or 運算子需要一個條件數組,表示為 bson.A。另一方面,$and 運算符是預設運算符,不需要明確指定。
請考慮以下範例,您希望使用嵌套在AND 條件中的OR 條件建立篩選器:
filter := bson.M{ "p": 10, "$and": bson.D{{"s", 30}, bson.M{"$or": bson.D{{"a", 1}}}}} }
此程式碼會導致錯誤,因為它嘗試在AND 條件內混合bson.M 和bson.D。要解決此問題,您需要使用bson.A 作為$or 條件並刪除不必要的$and 運算符:
filter := bson.D{ {"p", 10}, {"$or", bson.A{ bson.D{{"s", 30}}, bson.D{{"a", 1}}, }}, }
或者,您可以使用以下簡化語法:
filter := bson.M{ "p": 10, "$or": bson.A{ bson.M{"s": 30}, bson.M{"a": 10}, }, }
此語法建立與前面的範例相同的查詢過濾器。語法的選擇取決於您的偏好和查詢的複雜性。
以上是如何在 mongo-go-driver 中建構巢狀 OR/AND 查詢篩選器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!