/// <summary> /// 一行一行处理更新或者插入数据 /// </summary> /// <param name="primaryKeys">主键列名</param> /// <param name="collectionName">表名</param> /// <param name="dtb">数据</param> /// <param name="errorMsg">错误信息</param> /// <returns>是否成功</returns> public bool UpdateOrInsertRowByRow(string primaryKeys, string collectionName, SqlDataReader dataReader, out string errorMsg) { errorMsg = string.Empty; if (dataReader == null || !dataReader.HasRows) { return(true); } MongoCollection collection = GetMongoCollection(collectionName); while (dataReader.Read()) { IMongoQuery query = GetQuery(primaryKeys, dataReader); MongoDB.Driver.Builders.UpdateBuilder update = new MongoDB.Driver.Builders.UpdateBuilder(); for (int i = 0; i < dataReader.FieldCount; i++) { BsonValue bsonValue = BsonValue.Create(dataReader[i]); update.AddToSet(dataReader.GetName(i), bsonValue); } WriteConcernResult result = collection.Update(query, update, UpdateFlags.Upsert); if (!result.Ok) { errorMsg = result.ErrorMessage; return(false); } } dataReader.Close(); dataReader.Dispose(); return(true); }
public void SaveCounterExtData(int parentCategoryId, int parentCounterId, CounterExtDataInfo counterExtDataInfo) { MongoCollection<BsonDocument> items = Database.GetCollection("countersInfo"); IMongoQuery q = Query.And(Query.EQ("id", parentCategoryId)); UpdateBuilder u = new UpdateBuilder(); if (counterExtDataInfo != null) u.AddToSet("c" + parentCounterId + ".extDatas", new BsonDocument {{"name", counterExtDataInfo.Name}, {"id", counterExtDataInfo.Id}}); items.Update(q, u, UpdateFlags.Upsert, SafeMode.True); }
public void SaveCounterName(int parentCategoryId, CounterNameInfo nameInfo) { MongoCollection<BsonDocument> items = Database.GetCollection("countersInfo"); IMongoQuery q = Query.EQ("id", parentCategoryId); UpdateBuilder u = new UpdateBuilder(); u.AddToSet("counters", new BsonDocument {{"name", nameInfo.Name}, {"id", nameInfo.Id}}); u.Set("c" + nameInfo.Id, new BsonDocument { {"sources", new BsonArray()}, {"instances", new BsonArray()}, {"extDatas", new BsonArray()} }); items.Update(q, u, UpdateFlags.Upsert, SafeMode.True); }