/// <summary> /// 是否包含此记录 /// </summary> public virtual bool ContainsRecord(MongoHouseEntity houseEntity) { var db = _client.GetDatabase(this._mongoDBName); var collectionName = $"{ConstMongoTables.HouseData}_{houseEntity.City}"; return(db.GetCollection <MongoHouseEntity>(collectionName).AsQueryable().Any(x => x.OnlineURL == houseEntity.OnlineURL)); }
public bool WriteRecord(MongoHouseEntity houseEntity) { if (string.IsNullOrEmpty(houseEntity?.Id) || string.IsNullOrEmpty(houseEntity?.City) || string.IsNullOrEmpty(houseEntity?.OnlineURL)) { Console.WriteLine($"houseEntity is empty, skip it."); return(false); } var collectionName = $"{ConstMongoTables.HouseData}_{houseEntity.City}"; InitCollection(collectionName); if (ContainsRecord(houseEntity)) { Console.WriteLine($"house:{houseEntity.Title}-{houseEntity.OnlineURL} exits, skip it."); } var database = _client.GetDatabase(this._mongoDBName); var query = Builders <MongoHouseEntity> .Filter.Eq(x => x.Id, houseEntity.Id); var update = Builders <MongoHouseEntity> .Update.Set(x => x.Latitude, houseEntity.Latitude) .Set(x => x.Longitude, houseEntity.Longitude) .Set(x => x.Id, houseEntity.Id) .Set(x => x.City, houseEntity.City) .Set(x => x.CreateTime, houseEntity.CreateTime) .Set(x => x.Labels, houseEntity.Labels) .Set(x => x.Location, houseEntity.Location) .Set(x => x.OnlineURL, houseEntity.OnlineURL) .Set(x => x.PicURLs, houseEntity.PicURLs) .Set(x => x.Price, houseEntity.Price) .Set(x => x.PubTime, houseEntity.PubTime) .Set(x => x.RentType, houseEntity.RentType) .Set(x => x.Source, houseEntity.Source) .Set(x => x.Tags, houseEntity.Tags) .Set(x => x.Text, houseEntity.Text) .Set(x => x.Title, houseEntity.Title) .Set(x => x.Timestamp, houseEntity.Timestamp) .Set(x => x.UpdateTime, DateTime.Now); var options = new FindOneAndUpdateOptions <MongoHouseEntity> { ReturnDocument = ReturnDocument.After, IsUpsert = true }; var result = database.GetCollection <MongoHouseEntity>(collectionName).FindOneAndUpdate(query, update, options); Console.WriteLine($"save {houseEntity.Id} to {collectionName} mongodb finish, result:{result != null}"); return(result != null); }
/// <summary> /// 写入数据 /// </summary> public virtual async Task <bool> WriteRecordAsync(MongoHouseEntity houseEntity) { if (null == houseEntity || string.IsNullOrEmpty(houseEntity.Id) || string.IsNullOrEmpty(houseEntity.City)) { _logger.LogInformation($"house没有ID,跳过。"); return(false); } //var dateValue = houseEntity.PubTime.ToString("yyyyMM"); var collectionName = $"{ConstMongoTables.HouseData}_{houseEntity.City}"; await InitCollectionAsync(collectionName); var containsRecord = await ContainsRecordAsync(houseEntity); if (containsRecord) { _logger.LogInformation($"house:{houseEntity.Title} 已存在,直接跳过。"); return(true); } await _client.GetDatabase(this._mongoDBName).GetCollection <MongoHouseEntity>(collectionName).InsertOneAsync(houseEntity); _logger.LogInformation($"write collectionName:{collectionName}, house:{houseEntity.Title} success!"); return(true); }