2 回答

TA貢獻1796條經(jīng)驗 獲得超10個贊
uint8
是 的別名byte
,并且[]byte
是一種特殊類型,它的處理方式與其他切片類型不同(不是數(shù)字切片)。[]byte
值使用編碼bsoncodec.ByteSliceCodec
,其他切片值使用編碼bsoncodec.SliceCodec
。
使用任何其他數(shù)字類型的切片,例如[]int8
或[]int
:
filter := bson.M{"type": bson.M{"$in": []int{1, 2, 3}}}
注意:mongo 驅(qū)動程序有自己的 BSON 實現(xiàn)和包,請使用:go.mongodb.org/mongo-driver/bson
. 在您的示例中,您正在導入和使用gopkg.in/mgo.v2/bson
它是一個完全不同的 BSON 實現(xiàn),作為mgo
驅(qū)動程序的一部分開發(fā)(現(xiàn)在不受支持且已過時)。不要混合不同的驅(qū)動程序。

TA貢獻1982條經(jīng)驗 獲得超2個贊
您應該刪除 to 的轉(zhuǎn)換i,uint8并像這樣獲取數(shù)據(jù)正確的代碼。
// mock some data
collection := client.Database("testing").Collection("numbers")
for i := 0; i < 10; i++ {
_, err = collection.InsertOne(ctx, bson.M{"type": i, "value": i})
if err != nil {
fmt.Println(err)
return
}
}
res := collection.FindOne(ctx, bson.M{
"type": bson.M{
"$in": []int{1, 2, 3},
},
})
if res.Err()!=nil{
// handle error
}
然后您可以獲取原始數(shù)據(jù)或解碼為另一種類型,例如:
res.DecodeBytes()
- 2 回答
- 0 關(guān)注
- 165 瀏覽
添加回答
舉報