@@ -27,6 +27,7 @@ import (
2727 "github.com/10gen/migration-verifier/option"
2828 "github.com/olekukonko/tablewriter"
2929 "github.com/pkg/errors"
30+ "github.com/samber/lo"
3031 "go.mongodb.org/mongo-driver/bson"
3132 "go.mongodb.org/mongo-driver/bson/primitive"
3233 "go.mongodb.org/mongo-driver/mongo"
@@ -888,6 +889,14 @@ func (verifier *Verifier) doIndexSpecsMatch(ctx context.Context, srcSpec bson.Ra
888889 return true , nil
889890 }
890891
892+ var fieldsToRemove = []string {
893+ // v4.4 stopped adding “ns” to index fields.
894+ "ns" ,
895+
896+ // v4.2+ ignores this field.
897+ "background" ,
898+ }
899+
891900 // Next check to see if the only differences are type differences.
892901 // (We can safely use $documents here since this is against the metadata
893902 // cluster, which we can require to be v5+.)
@@ -904,12 +913,13 @@ func (verifier *Verifier) doIndexSpecsMatch(ctx context.Context, srcSpec bson.Ra
904913 {"dstSpec" , dstSpec },
905914 }}},
906915
907- // Remove the “ns” field from both. (NB: 4.4+ don’t create these,
908- // though in-place upgrades may cause them still to exist.)
909- {{"$addFields" , bson.D {
910- {"spec.ns" , "$$REMOVE" },
911- {"dstSpec.ns" , "$$REMOVE" },
912- }}},
916+ {{"$unset" , lo .Reduce (
917+ fieldsToRemove ,
918+ func (cur []string , field string , _ int ) []string {
919+ return append (cur , "spec." + field , "dstSpec." + field )
920+ },
921+ []string {},
922+ )}},
913923
914924 // Now check to be sure that those specs match.
915925 {{"$match" , bson.D {
0 commit comments