我正在使用 Golang 的官方 MongoDb 驅(qū)動(dòng)程序。我有一個(gè)時(shí)間戳類型的字段,我想從我的 Golang 代碼中更新它。這是我的結(jié)構(gòu)(lastUpdate 字段是時(shí)間戳字段):import ( "context" "log" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" "go.mongodb.org/mongo-driver/mongo/readpref" "go.mongodb.org/mongo-driver/bson/primitive")type MyStruct struct { Id primitive.ObjectID `json:"id" bson:"_id,omitempty"` Name string `json:"name"` Alias string `json:"alias"` Signed bool `json:"signed"` Age int `json:"age"` CreatedDate time.Time `json:"createdDaate"` LastUpdate primitive.Timestamp `json:"lastUpdate"`}然后我傳遞這個(gè) bson 來(lái)更新我的數(shù)據(jù): // logic to update data docID, _ := primitive.ObjectIDFromHex("5de30185e4fabe4778f0ffdf") UpdateMyData(c, bson.M{"createdDate": time.Now(), "lastUpdate": time.Now().UnixNano() }, bson.M{"_id": docID}) //update methodfunc UpdateMyData(client *mongo.Client, updatedData bson.M, filter bson.M) int64 { collection := client.Database("*****").Collection("*****") atualizacao := bson.D{ {Key: "$set", Value: updatedData} } updatedResult, err := collection.UpdateOne(context.TODO(), filter, atualizacao) if err != nil { log.Fatal("Error on updating one Hero", err) } return updatedResult.ModifiedCount}UpdateMyData 方法的內(nèi)容很好,因?yàn)樗唤邮?bson 并調(diào)用 UpdateOne 方法將數(shù)據(jù)更新到數(shù)據(jù)庫(kù)中,并適用于我正確擁有的所有不同字段。問(wèn)題是time.Now().UnixNane()返回int64值,上面的代碼不會(huì)引發(fā)錯(cuò)誤,但它將我的 MongoDb 數(shù)據(jù)庫(kù)中該特定行的lastUpdated的“類型”更改為Int64 !那么將數(shù)據(jù)傳遞到時(shí)間戳字段而不改變其類型的正確方法是什么?
1 回答

人到中年有點(diǎn)甜
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
嘗試傳遞時(shí)間戳而不是 int64:
"lastUpdate": primitive.Timestamp{T:uint32(time.Now().Unix())}
請(qǐng)注意,mongodb 時(shí)間戳是 unix 秒,而不是納秒。
- 1 回答
- 0 關(guān)注
- 223 瀏覽
添加回答
舉報(bào)
0/150
提交
取消