Exemple #1
0
        // =====================================================
        public override bool Insert(HockeyPlayer hockeyPlayer)
        // =====================================================
        {
            bool insertSuccess = false;

            if (Connected())
            {
                var builder  = Builders <BsonDocument> .Filter;
                var filterFN = builder.Eq("FirstName", hockeyPlayer.FirstName);
                var filterLN = builder.Eq("LastName", hockeyPlayer.LastName);
                var filter   = filterFN & filterLN;

                // Check to see if the player is already in the database
                if (_mongoCollection.Find(filter).FirstOrDefault() == null)
                {
                    // If the player is not then insert him
                    var player     = new MongoDbHockeyPlayer(hockeyPlayer);
                    var playerDoc  = new BsonDocument();
                    var bsonWriter = new BsonDocumentWriter(playerDoc);
                    BsonSerializer.Serialize(bsonWriter, player); // Serialize MongoDbHockeyPlayer to BsonDocument

                    _mongoCollection.InsertOne(playerDoc);        // Insert the BsonDocument into the database
                    insertSuccess = true;
                }
                else
                {
                    Console.WriteLine("Player is already in the database.");
                }
            }

            return(insertSuccess);
        }
Exemple #2
0
        // =====================================================
        // Read a player out of the database
        // Expect "first last"
        public override HockeyPlayer Read(string playerName)
        // =====================================================
        {
            MongoDbHockeyPlayer hockeyPlayer = null;

            if (Connected())
            {
                // Parse the string into last_name/first_name
                string[] name = playerName.Split(' ');

                var builder  = Builders <BsonDocument> .Filter;
                var filterFN = builder.Eq("FirstName", name[0]);
                var filterLN = Builders <BsonDocument> .Filter.Eq("LastName", name[1]);

                if (name.Length == 3 && name[1] == "St.")
                {
                    filterLN = Builders <BsonDocument> .Filter.Eq("LastName", name[1] + " " + name[2]);
                }
                var filter = filterFN & filterLN;

                var player = _mongoCollection.Find(filter).FirstOrDefault();
                if (player != null)
                {
                    hockeyPlayer = BsonSerializer.Deserialize <MongoDbHockeyPlayer>(player);
                }
            }

            return(hockeyPlayer);
        }
Exemple #3
0
        // =====================================================
        public override bool Update(HockeyPlayer hockeyPlayer)
        // =====================================================
        {
            bool updateSuccess = false;

            if (Connected())
            {
                // First retrieve the player's current document in the database
                // Build a query filter. This filter will be used to both find and replace
                var builder  = Builders <BsonDocument> .Filter;
                var filterFN = builder.Eq("FirstName", hockeyPlayer.FirstName);
                var filterLN = builder.Eq("LastName", hockeyPlayer.LastName);
                var filter   = filterFN & filterLN;

                // Find the player in the database
                var currentPlayerDoc = _mongoCollection.Find(filter).FirstOrDefault();
                var currentPlayer    = new MongoDbHockeyPlayer();
                currentPlayer = BsonSerializer.Deserialize <MongoDbHockeyPlayer>(currentPlayerDoc);

                // CurrentPlayer is the player as represented in the existing BsonDocument
                // Need to transfer this player's _id to the new player's _id

                var newPlayer = new MongoDbHockeyPlayer(hockeyPlayer);
                newPlayer._id = currentPlayer._id;

                var newPlayerDoc = new BsonDocument();
                var bsonWriter   = new BsonDocumentWriter(newPlayerDoc);
                BsonSerializer.Serialize(bsonWriter, newPlayer);   // Serialize the new MongoDbHockeyPlayer to BsonDocument

                var options = new UpdateOptions();
                options.IsUpsert = true;
                try
                {
                    var result = _mongoCollection.ReplaceOne(filter, newPlayerDoc, options); // Replace the existing BsonDocument with the new one

                    updateSuccess = true;
                }
                catch (BsonSerializationException ex)
                {
                    Console.WriteLine();
                    Console.WriteLine($"MongoDbConnection Update failed with error: {ex.Message}");
                    Console.WriteLine();
                }
            }

            return(updateSuccess);
        }
Exemple #4
0
        // =====================================================
        public override List <HockeyPlayer> Read()
        // =====================================================
        {
            List <HockeyPlayer> hockeyPlayers = new List <HockeyPlayer>();
            var builder    = Builders <BsonDocument> .Filter;
            var filter     = builder.Eq("_t", "MongoDbHockeyPlayer");
            var playerDocs = _mongoCollection.Find(filter).ToList();

            foreach (BsonDocument playerDoc in playerDocs)
            {
                var hockeyPlayer = new MongoDbHockeyPlayer();
                hockeyPlayer = BsonSerializer.Deserialize <MongoDbHockeyPlayer>(playerDoc);
                hockeyPlayers.Add(hockeyPlayer);
            }

            return(hockeyPlayers);
        }
Exemple #5
0
 // ==============================================================
 public MongoDbHockeyPlayer(MongoDbHockeyPlayer player) : base(player)
     // ==============================================================
 {
     _id = player._id;
 }