// ===================================================== 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); }
// ===================================================== // 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); }
// ===================================================== 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); }
// ===================================================== 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); }
// ============================================================== public MongoDbHockeyPlayer(MongoDbHockeyPlayer player) : base(player) // ============================================================== { _id = player._id; }