diff --git a/document.go b/document.go index 7824d25..dfd97fe 100644 --- a/document.go +++ b/document.go @@ -96,13 +96,15 @@ func (d *Document) Save() error { if val.Kind() == reflect.Slice { for i := 0; i < val.Len(); i++ { cur := val.Index(i) - if err := doSave(d.model.getColl(), !d.exists, cur.Interface()); err != nil { + asId := cur.Interface().(HasID) + if err := doSave(d.model.getColl(), !d.exists && reflect.ValueOf(asId.Id()).IsZero(), cur.Interface()); err != nil { return err } } return nil } else { - return doSave(d.model.getColl(), !d.exists, d.self) + asId := val.Interface().(HasID) + return doSave(d.model.getColl(), !d.exists && reflect.ValueOf(asId.Id()).IsZero(), d.self) } }