【发布时间】:2022-11-21 21:40:15
【问题描述】:
我正在使用 golang 观看所有 insert 事件的 mongodb 集合。我使用了 mongodb 函数,改变流.
我的要求是访问返回事件中的数据,它似乎是 bson.m 类型
这是我的代码示例:
func watch_for_events() {
fmt.Println("Watching Started....")
matchPipeline := bson.D{{"$match", bson.D{{"operationType", "insert"}}}}
// open a change stream with an empty pipeline parameter
coll := mongoConnection.Database(mongo_db).Collection(added_collection)
changeStream, err := coll.Watch(context.TODO(), mongo.Pipeline{matchPipeline})
if err != nil {
panic(err)
}
defer changeStream.Close(context.TODO())
// iterate over the cursor to print the change stream events
for changeStream.Next(context.TODO()) {
fmt.Println(changeStream.Current)
fmt.Printf("POD name is: %v", changeStream.Current.Lookup("pod_name"))
}
fmt.Println("Watching Ended....")
}
这是我得到的输出
map[_id:map[_data:82637B3725000000012B022C0100296E5A10046C554EC75E644A81AF98CC28BAF03C0246645F69640064637B37253BC63551C4856EB50004] clusterTime:{1669019429 1} documentKey:map[_id:ObjectID("637b37253bc63551c4856eb5")] fullDocument:map[_id:ObjectID("637b37253bc63551c4856eb5") containers_and_images:[[nginx] [nginx:stable]] pod_name:nginx-847c4cd46c-dn2sc total_container_count:1] ns:map[coll:app1-added-pods db:ng-db] operationType:insert]
但是 fmt.Printf("POD name is: %v", changeStream.Current.Lookup("pod_name")) 行表示未找到元素。我需要获取诸如pod_name、namespace、total_container_count等数据。
有人可以帮我吗?
【问题讨论】:
标签: mongodb go mongo-go changestream