go-mongo-driver,使用ObjectID查询记录
在mgo V1.8中,ObjectID相关的数据类型、函数与方法在primitive 包中,旧版在bson包。
我们一般使用的是从Hex字符串转换成ObjectID来查找记录
旧版本的的函数是
bson.ObjectIDHex(s string)(ObjectID, error)
新版本的是
primitive,ObjectIDFromHex(s string) (ObjectID, error)
也可以使用Timestamp创建ObjectID,在特定场景使用,通过ID查询记录一般使用Hex字符串
primitive.NewObjectIDFromTimestamp(timestamp time.Time) ObjectID
用例
package main
import (
"context"
"fmt"
"log"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
clientOptions := options.Client().ApplyURI("mongodb://admin:123456@192.168.2.58:27017")
client, err := mongo.Connect(context.TODO(), clientOptions)
if err != nil {
log.Fatal(err)
}
err = client.Ping(context.TODO(), nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Connected to MongoDB!")
collection := client.Database("reading").Collection("article1")
id, _ := primitive.ObjectIDFromHex("61610bc860e33888399b0a54")
fmt.Println(id)
var m ReadingArticle
err = collection.FindOne(context.TODO(), bson.M{"_id": id}).Decode(&m)
if err != nil {
log.Fatal(err)
}
fmt.Println(m)
}
type ReadingArticle struct {
ID primitive.ObjectID `bson:"_id,omitempty"`
Title string `bson:"title"`
Value string `bson:"value"`
Origin string `bson:"origin"`
Time int `bson:"time"`
Kind string `bson:"kind"`
Link string `bson:"link"`
}