func TestUpdate(t *testing.T) { db := setupDb(t) // Update a doc and check that it's changed obj := bson.M{"_id": bson.NewObjectId(), "key": "value"} assert.NoError(t, db.C("test").Insert(obj)) updatedObj := bson.M{"key": "value2"} op := operation.Op{ ID: obj["_id"].(bson.ObjectId).Hex(), Type: "update", Namespace: "throttle.test", Obj: updatedObj, } assert.NoError(t, applyOp(op, db.Session)) var result bson.M assert.NoError(t, db.C("test").Find(bson.M{}).One(&result)) assert.Equal(t, "value2", result["key"].(string)) // Try with the $set syntax op.Obj = bson.M{"$set": bson.M{"key": "value3"}} assert.NoError(t, applyOp(op, db.Session)) assert.NoError(t, db.C("test").Find(bson.M{}).One(&result)) assert.Equal(t, "value3", result["key"].(string)) // Updating a doc that doesn't exist doesn't fail op.ID = bson.NewObjectId().Hex() assert.NoError(t, applyOp(op, db.Session)) }