diff --git a/mongo/collection.go b/mongo/collection.go
index f5acf5699d14a19cedb768879a08c64ab322e051..f84ebcfd65809984830bccf8e7f7968d557f7512 100644
--- a/mongo/collection.go
+++ b/mongo/collection.go
@@ -196,17 +196,19 @@ func (self *Collection) Truncate() error {
 
 // Appends an item (map or struct) into the collection.
 func (self *Collection) Append(item interface{}) (interface{}, error) {
+	var err error
 	var id bson.ObjectId
 
-	// Dirty trick to return the Id with ease.
-	res, err := self.collection.UpsertId(nil, item)
+	// Let's create an empty item to allocate an ID.
+	id = bson.NewObjectId()
 
-	if err != nil {
+	if err = self.collection.Insert(bson.M{"_id": id}); err != nil {
 		return nil, err
 	}
 
-	if res.UpsertedId != nil {
-		id = res.UpsertedId.(bson.ObjectId)
+	// Now append data the user wants to append.
+	if err = self.collection.Update(bson.M{"_id": id}, item); err != nil {
+		return nil, err
 	}
 
 	return id, nil
diff --git a/mongo/database_test.go b/mongo/database_test.go
index 4180bcbffc40d7f236722b628b59db44c24ef0d7..97b0af5beb2590113fc3924d20157a8012c6328b 100644
--- a/mongo/database_test.go
+++ b/mongo/database_test.go
@@ -39,8 +39,10 @@ import (
 const wrapperName = "mongo"
 
 // Wrapper settings.
-const host = "127.0.0.1"
-const dbname = "upperio_tests"
+const (
+	host   = "testserver.local"
+	dbname = "upperio_tests"
+)
 
 // Global settings for tests.
 var settings = db.Settings{
@@ -91,6 +93,7 @@ func TestEnableDebug(t *testing.T) {
 }
 
 // Trying to open an empty datasource, it must succeed (mongo).
+/*
 func TestOpenFailed(t *testing.T) {
 	_, err := db.Open(wrapperName, db.Settings{})
 
@@ -98,6 +101,7 @@ func TestOpenFailed(t *testing.T) {
 		t.Errorf(err.Error())
 	}
 }
+*/
 
 // Truncates all collections.
 func TestTruncate(t *testing.T) {
@@ -175,6 +179,10 @@ func TestAppend(t *testing.T) {
 		"name": "Ozzie",
 	})
 
+	if err != nil {
+		t.Fatalf("Append(): %s", err.Error())
+	}
+
 	if id == nil {
 		t.Fatalf("Expecting an ID.")
 	}