diff --git a/mongo/collection.go b/mongo/collection.go
index c8d739800b49e9a65fdc2b6c0a9a6c8de1620bb7..32eafebd37d9240ff62696db2ae10458a4fb978d 100644
--- a/mongo/collection.go
+++ b/mongo/collection.go
@@ -201,11 +201,32 @@ func (self *Collection) Append(item interface{}) (interface{}, error) {
 
 	id = bson.NewObjectId()
 
-	if _, err = self.collection.Upsert(bson.M{"_id": id}, item); err != nil {
+	// Allocating a new ID.
+	if err = self.collection.Insert(bson.M{"_id": id}); err != nil {
+		return nil, err
+	}
+
+	// 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
+
+	/*
+		var id bson.ObjectId
+		var err error
+
+		id = bson.NewObjectId()
+
+		_, err = self.collection.Upsert(bson.M{"_id": id}, item);
+
+		if err != nil {
+			return nil, err
+		}
+
+		return id, nil
+	*/
 }
 
 // Returns true if the collection exists.