From 51328571547026f3d9823b808c81c220b24934c9 Mon Sep 17 00:00:00 2001 From: George Suntres Date: Tue, 31 Mar 2026 11:09:37 -0400 Subject: [PATCH] Add bson.A to slice map function --- struct.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/struct.go b/struct.go index 1810bf6..9d21d06 100644 --- a/struct.go +++ b/struct.go @@ -72,6 +72,35 @@ func MapToStruct(m map[string]any, o any) error { return nil } +type WrapA struct { + Items []map[string]any +} + +// BsonAToSlice will convert a bson.A to []map[string]any. +func BsonAToSlice(m any) ([]map[string]any, error) { + + v := bson.M{ + "items": m.(bson.A), + } + + b, err := bson.Marshal(v) + if err != nil { + log.Printf("Failed marshal %v", err) + + return nil, err + } + + var o WrapA + err = bson.Unmarshal(b, &o) + if err != nil { + log.Printf("Failed to unmarshal %v", err) + + return nil, err + } + + return o.Items, nil +} + // MapIsSubset given two map[string]any m1 and m2 will determine if m1 is a subset of m2. // Only fields' name is evaluated not their values. func MapIsSubset(subset, superset any) bool {