public override void CreateUninitializedItem(HttpContext context, string id, int timeout)
        {
            MongoClient conn = GetConnection();
            IMongoCollection <BsonDocument> sessionCollection = GetSessionCollection(conn);
            var doc = MongoSessionStateStoreHelpers.GetNewBsonSessionDocument(
                id: id,
                applicationName: ApplicationName,
                created: DateTime.Now.ToUniversalTime(),
                lockDate: DateTime.Now.ToUniversalTime(),
                lockId: 0,
                timeout: timeout,
                locked: false,
                jsonSessionItemsArray: new BsonArray(),
                flags: 1);

            this.UpsertEntireSessionDocument(sessionCollection, doc);
        }
        /// <summary>
        /// SessionStateProviderBase.SetAndReleaseItemExclusive
        /// </summary>
        public override void SetAndReleaseItemExclusive(
            HttpContext context,
            string id,
            SessionStateStoreData item,
            object lockId,
            bool newItem)
        {
            BsonArray arraySession = MongoSessionStateStoreHelpers.Serialize(item);

            MongoClient conn = GetConnection();
            var         sessionCollection = GetSessionCollection(conn);

            if (newItem)
            {
                var insertDoc = MongoSessionStateStoreHelpers.GetNewBsonSessionDocument(
                    id: id,
                    applicationName: ApplicationName,
                    created: DateTime.Now.ToUniversalTime(),
                    lockDate: DateTime.Now.ToUniversalTime(),
                    lockId: 0,
                    timeout: item.Timeout,
                    locked: false,
                    jsonSessionItemsArray: arraySession,
                    flags: 0);

                this.UpsertEntireSessionDocument(sessionCollection, insertDoc);
            }
            else
            {
                var filter = Builders <BsonDocument> .Filter.And(
                    Builders <BsonDocument> .Filter.Eq("_id", MongoSessionStateStoreHelpers.GetDocumentSessionId(id, ApplicationName)),
                    Builders <BsonDocument> .Filter.Eq("LockId", (Int32)lockId)
                    );

                var update = Builders <BsonDocument> .Update
                             .Set("Expires", DateTime.Now.AddMinutes(item.Timeout).ToUniversalTime())
                             .Set("SessionItemJSON", arraySession)
                             .Set("Locked", false);

                this.UpdateSessionCollection(sessionCollection, filter, update);
            }
        }