2 回答

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

TA貢獻1982條經驗 獲得超2個贊
您應該刪除 to 的轉換i,uint8并像這樣獲取數據正確的代碼。
// 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
}
然后您可以獲取原始數據或解碼為另一種類型,例如:
res.DecodeBytes()
- 2 回答
- 0 關注
- 160 瀏覽
添加回答
舉報