码迷,mamicode.com
首页 > 数据库 > 详细

GoLang 中用 MongoDB Watch 监听指定字段的变化

时间:2019-09-11 22:21:42      阅读:459      评论:0      收藏:0      [点我收藏+]

标签:set   field   监听   sts   func   exist   ica   replicas   change   

需要 MongoDB 3.6 及以上, 需要 ReplicaSet 模式。
监听一个字段的变化:

func watch(coll *mongo.Collection) {
    match := bson.D{{"operationType", "update"},
        {"updateDescription.updatedFields.name", bson.D{{"$exists", true}}}}
    coll.Watch(context.Background(), mongo.Pipeline{{{"$match", match}}},
        options.ChangeStream().SetFullDocument(options.UpdateLookup))
}

监听两个字段的变化:

func watch(coll *mongo.Collection) {
    match := bson.D{
                {"operationType", "update"},
        {"$or", bson.A{
            bson.D{{"updateDescription.updatedFields.name", 
                                bson.D{{"$exists", true}},
                        }},
            bson.D{{"updateDescription.updatedFields.age", 
                                bson.D{{"$exists", true}},
                        }},
                }}

    coll.Watch(context.Background(), mongo.Pipeline{{{"$match", match}}},
        options.ChangeStream().SetFullDocument(options.UpdateLookup))
}

任意一个变化,用$or ,都变化,用$and。注意 bson.A 里面是 bson.D

GoLang 中用 MongoDB Watch 监听指定字段的变化

标签:set   field   监听   sts   func   exist   ica   replicas   change   

原文地址:https://www.cnblogs.com/flipped/p/mongo-watch-specified-fields.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!