diff --git a/pkg/builder/convert_find.go b/pkg/builder/convert_find.go index 8216011..791ba17 100644 --- a/pkg/builder/convert_find.go +++ b/pkg/builder/convert_find.go @@ -15,8 +15,10 @@ func covert_find(ctx Context, find Find, join string) string { if join == "" { join = " AND " } + keys := AggregateSortedKeys([]Map{find}) expressions := []string{} - for key, value := range find { + for _, key := range keys { + value := find[key] if strings.Contains(key, "$and") { v := covert_find(ctx, value.(Find), "") expressions = append(expressions, fmt.Sprintf("(%s)", v)) diff --git a/pkg/builder/convert_insert.go b/pkg/builder/convert_insert.go index 38af29d..6bbd36b 100644 --- a/pkg/builder/convert_insert.go +++ b/pkg/builder/convert_insert.go @@ -11,7 +11,7 @@ type InsertData struct { } func ConvertInsert(ctx Context, inserts []Map) (InsertData, error) { - keys := AggregateKeys(inserts) + keys := AggregateSortedKeys(inserts) placeholder := make([]string, 0) for range keys { placeholder = append(placeholder, "?") diff --git a/pkg/builder/utils.go b/pkg/builder/utils.go index ec2619f..cedea80 100644 --- a/pkg/builder/utils.go +++ b/pkg/builder/utils.go @@ -2,7 +2,7 @@ package builder import "sort" -func AggregateKeys(maps []Map) []string { +func AggregateSortedKeys(maps []Map) []string { set := make(map[string]int) keys := make([]string, 0) for _, item := range maps {