ネストされた演算子(OR / AND / ...)を使用してMongoDBクエリフィルターを作成しようとしています。しかし、libはaを作成してそれに要素をbson.D
渡す必要がありますbson.E
。私が持っている必要がある場合はOR/AND
内部AND/OR
-私は配置する必要があり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
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},
},
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加