-
Notifications
You must be signed in to change notification settings - Fork 34
Open
Description
this namespace is mongodb's collection and field ?
in this example, namespace == "users.users" ,namespace == "users.status", "users" is collection name? "status" is mongo document's field name?
func PipeBuilder(namespace string, changeStream bool) ([]interface{}, error) {
// to build your pipelines for change events you will want to reference
// the MongoDB reference for change events at
// https://docs.mongodb.com/manual/reference/change-events/
// you will only receive changeStream == true when you configure gtm with
// ChangeStreamNS (requies MongoDB 3.6+). You cannot build pipelines for
// changes using legacy direct oplog tailing
if namespace == "users.users" {
// given a set of docs like {username: "joe", email: "joe@email.com", amount: 1}
if changeStream {
return []interface{}{
bson.M{"$match": bson.M{"fullDocument.username": "joe"}},
}, nil
} else {
return []interface{}{
bson.M{"$match": bson.M{"username": "joe"}},
}, nil
}
} else if namespace == "users.status" && changeStream {
// return a pipeline that only receives events when a document is
// inserted, deleted, or a specific field is changed. In this case
// only a change to field1 is processed. Changes to other fields
// do not match the pipeline query and thus you won't receive the event.
return []interface{}{
bson.M{"$match": bson.M{"$or": []interface{} {
bson.M{"updateDescription": bson.M{"$exists": false}},
bson.M{"updateDescription.updatedFields.field1": bson.M{"$exists": true}},
}}},
}, nil
}
return nil, nil
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels