public void UpdateFriend(string owner, string username, string nickname, string group, string remark, Subscription?subscriptionType, FriendUpdateFlags flags)
        {
            if (owner == null || username == null)
            {
                return;
            }

            var db         = GetDatabase();
            var collection = db.GetCollection("friends");


            owner    = owner.ToLower();
            username = username.ToLower();

            var queryDoc = new QueryDocument(new BsonElement("owner", owner),
                                             new BsonElement("username", username));

            BsonDocument updateDoc = new BsonDocument();

            if (flags == FriendUpdateFlags.UpdateAll || (flags & FriendUpdateFlags.UpdateGroup) == FriendUpdateFlags.UpdateGroup)
            {
                updateDoc.Add("group", group);
            }

            if (flags == FriendUpdateFlags.UpdateAll || (flags & FriendUpdateFlags.UpdateNickname) == FriendUpdateFlags.UpdateNickname)
            {
                updateDoc.Add("nickname", nickname);
            }

            if (flags == FriendUpdateFlags.UpdateAll || (flags & FriendUpdateFlags.UpdateRemark) == FriendUpdateFlags.UpdateRemark)
            {
                updateDoc.Add("remark", remark);
            }

            if (flags == FriendUpdateFlags.UpdateAll || (flags & FriendUpdateFlags.UpdateSubscription) == FriendUpdateFlags.UpdateSubscription)
            {
                updateDoc.Add("subscription", subscriptionType.ToString());
            }

            collection.Update(queryDoc
                              , new UpdateDocument("$set", updateDoc), UpdateFlags.Upsert);
        }
        public void UpdateFriend(string owner, string username, string nickname, string group, string remark, Subscription? subscriptionType, FriendUpdateFlags flags)
        {
            if (owner == null || username == null)
                return;

            var db = GetDatabase();
            var collection = db.GetCollection("friends");

            owner = owner.ToLower();
            username = username.ToLower();

            var queryDoc = new QueryDocument(new BsonElement("owner", owner),
                new BsonElement("username", username));

            BsonDocument updateDoc = new BsonDocument();

            if (flags == FriendUpdateFlags.UpdateAll || (flags & FriendUpdateFlags.UpdateGroup) == FriendUpdateFlags.UpdateGroup)
                updateDoc.Add("group", group);

            if (flags == FriendUpdateFlags.UpdateAll || (flags & FriendUpdateFlags.UpdateNickname) == FriendUpdateFlags.UpdateNickname)
                updateDoc.Add("nickname", nickname);

            if (flags == FriendUpdateFlags.UpdateAll || (flags & FriendUpdateFlags.UpdateRemark) == FriendUpdateFlags.UpdateRemark)
                updateDoc.Add("remark", remark);

            if (flags == FriendUpdateFlags.UpdateAll || (flags & FriendUpdateFlags.UpdateSubscription) == FriendUpdateFlags.UpdateSubscription)
                updateDoc.Add("subscription", subscriptionType.ToString());

            collection.Update(queryDoc
                , new UpdateDocument("$set", updateDoc), UpdateFlags.Upsert);
        }