diff --git a/find.go b/find.go index 639740d..7a4d962 100644 --- a/find.go +++ b/find.go @@ -60,8 +60,14 @@ func (c *MongoClient) Find(ctx context.Context, database, name string, filter bs var totalValue any if len(metadata) != 0 { - metadataRoot := metadata[0].(bson.D) - totalValue, _ = commons.BsonDGetAny(metadataRoot, "total") + switch metadata[0].(type) { + case bson.D: + metadataRoot := metadata[0].(bson.D) + totalValue, _ = commons.BsonDGetAny(metadataRoot, "total") + case bson.M: + metadataRoot := metadata[0].(bson.M) + totalValue = metadataRoot["total"] + } } var total int64 @@ -148,8 +154,14 @@ func (c *MongoClient) FindOffset(ctx context.Context, database, name string, fil var totalValue any if len(metadata) != 0 { - metadataRoot := metadata[0].(bson.D) - totalValue, _ = commons.BsonDGetAny(metadataRoot, "total") + switch metadata[0].(type) { + case bson.D: + metadataRoot := metadata[0].(bson.D) + totalValue, _ = commons.BsonDGetAny(metadataRoot, "total") + case bson.M: + metadataRoot := metadata[0].(bson.M) + totalValue = metadataRoot["total"] + } } var total int64 diff --git a/find_test.go b/find_test.go index 1223100..ab46c9c 100644 --- a/find_test.go +++ b/find_test.go @@ -15,7 +15,9 @@ func TestFind_Default(t *testing.T) { client := GetMongoClient() filter := bson.M{"name": bson.M{"$regex": "OSRAM"}} - findResult, err := client.Find(context.Background(), "mydb", "mycollection", filter, 0) + findResult, err := client.Find(context.Background(), "mydb", "mycollection", filter, &FindOptions{ + Offset: int64(0), + }) if err != nil { t.Fatalf("Failed to insertOne %#v", err) } @@ -74,6 +76,7 @@ func TestFind_Discriminator(t *testing.T) { client := GetMongoClient() client.AddDefinition(store) + client.AddDefinition(offer) // Save two offers with the similar name in different stores each. @@ -97,7 +100,9 @@ func TestFind_Discriminator(t *testing.T) { // Now searching in store str_1234 for OSRAM should return only one filter := bson.M{"name": bson.M{"$regex": "OSRAM*"}} - findResult, err := client.Find(ctx1, "mydb", "offer", filter, 0) + findResult, err := client.Find(ctx1, "mydb", "offer", filter, &FindOptions{ + Offset: int64(0), + }) if err != nil { t.Fatalf("Failed to find %#v", err) } dataAny, hasData := findResult["data"] diff --git a/main.go b/main.go index bdde541..15013b9 100644 --- a/main.go +++ b/main.go @@ -158,7 +158,7 @@ func (c *MongoClient) GetCollection(database, name string) *mongo.Collection { } collection := db.Collection(name) - + c.CreateIndexes(collection, cdef) c.CreateViews(db, cdef) diff --git a/main_views.go b/main_views.go index fde7356..ef20eac 100644 --- a/main_views.go +++ b/main_views.go @@ -4,8 +4,6 @@ import ( "context" "log" - // "runtime" - "go.mongodb.org/mongo-driver/v2/mongo" "go.mongodb.org/mongo-driver/v2/mongo/options" "go.mongodb.org/mongo-driver/v2/bson" @@ -19,8 +17,6 @@ func (c *MongoClient) CreateViews(db *mongo.Database, cdef *CollectionDefinition return } - // runtime.Breakpoint() - for name, defVal := range cdef.Views { // 1. Decode definition