我嘗試使用嵌套運(yùn)算符 (OR/AND/...) 創(chuàng)建一個(gè) MongoDB 查詢(xún)過(guò)濾器。但是 lib 需要?jiǎng)?chuàng)建 abson.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}}}}}..當(dāng)然它不起作用:cannot use primitive.M literal (type primitive.M) as type primitive.E in slice literal. 如果稍后我嘗試... in []在 a 中使用邏輯,可能會(huì)發(fā)生同樣的問(wèn)題bson.D如何在 Go 和官方 MongoDB 驅(qū)動(dòng)程序中創(chuàng)建這樣的嵌套查詢(xún)?
1 回答

繁星淼淼
TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
重要的是$or需要一個(gè)數(shù)組,即bson.A. 也是$and默認(rèn)值,您不必指明。
您的過(guò)濾器可以這樣定義:
filter := bson.D{
{"p", 10},
{"$or", bson.A{
bson.D{{"s", 30}},
bson.D{{"a", 10}},
}},
}
你也可以使用這個(gè):
filter = bson.D{
{"p", 10},
{"$or", bson.A{
bson.M{"s": 30},
bson.M{"a": 10},
}},
}
或這個(gè):
filter := bson.M{
"p": 10,
"$or": bson.A{
bson.M{"s": 30},
bson.M{"a": 10},
},
}
- 1 回答
- 0 關(guān)注
- 377 瀏覽
添加回答
舉報(bào)
0/150
提交
取消