簡體   English   中英

mongo-go-driver:嵌套的 OR/AND 查詢過濾器

[英]mongo-go-driver: nested OR/AND query filter

我嘗試使用嵌套運算符 (OR/AND/...) 創建 MongoDB 查詢過濾器。 但是 lib 需要創建一個bson.D並將bson.E元素傳遞給它。 如果我需要在AND/OR使用OR/AND - 我需要像這樣將bson.M + bson.D放在bson.D

filter := bson.M{"$and": bson.D{{"p", 10}, bson.M{"$or": bson.D{{"s", 30}, {"a", 1}}}}}

..當然它不起作用: cannot use primitive.M literal (type primitive.M) as type primitive.E in slice literal 如果稍后我嘗試... in [] bson.D使用... in []邏輯,可能會發生同樣的問題

如何在 Go 和官方 MongoDB 驅動程序中創建此類嵌套查詢?

重要的是$or需要一個數組,即bson.A $and也是默認值,您不必指明。

您的過濾器可以這樣定義:

filter := bson.D{
    {"p", 10},
    {"$or", bson.A{
        bson.D{{"s", 30}},
        bson.D{{"a", 10}},
    }},
}

你也可以使用這個:

filter = bson.D{
    {"p", 10},
    {"$or", bson.A{
        bson.M{"s": 30},
        bson.M{"a": 10},
    }},
}

或這個:

filter := bson.M{
    "p": 10,
    "$or": bson.A{
        bson.M{"s": 30},
        bson.M{"a": 10},
    },
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM