예제 #1
0
 public static JObject Marge(JObject obj1, JObject obj2, MergeArrayHandling mergeType)
 {
     obj1.Merge(obj2, new JsonMergeSettings
     {
         MergeArrayHandling = mergeType
     });
     return(obj1);
 }
예제 #2
0
 public long Update(string collection, IDBQueryBuilder query, JObject data, bool overrideData = false, MergeArrayHandling mergeType = MergeArrayHandling.Union)
 {
     throw new NotImplementedException();
 }
예제 #3
0
        public long Update(string collection, string bsonQuery, Newtonsoft.Json.Linq.JObject data, bool overrideData = false, MergeArrayHandling mergeType = MergeArrayHandling.Union)
        {
            data[CommonConst.CommonField.UPDATED_DATE_TIME] = CommonUtility.GetUnixTimestamp(DateTime.Now);
            data[CommonConst.CommonField.UPDATED_BY]        = GetUserId();
            var dataResut    = Get(collection, bsonQuery, null, null);
            var dbcollection = _mongoDataBase.GetCollection <BsonDocument>(collection);

            if (overrideData)
            {
                if (dataResut.Count > 1)
                {
                    throw new InvalidFilterException((int)ErrorCode.DB.MULTIPLE_ROW_RETURNED, string.Format("Update replace command cannot execute in multiple rows"));
                }
                if (dataResut.Count == 1)
                {
                    (dataResut[0] as JObject).Merge(data, new JsonMergeSettings
                    {
                        MergeArrayHandling = mergeType
                    });

                    if (data[CommonConst.CommonField.ID] != null)
                    {
                        dataResut[0][CommonConst.CommonField.ID] = data[CommonConst.CommonField.ID];
                    }
                    MongoDB.Bson.BsonDocument document = MongoDB.Bson.Serialization.BsonSerializer.Deserialize <BsonDocument>(dataResut[0].ToString());
                    ReplaceOneResult          result   = dbcollection.ReplaceOne(GetFilter(bsonQuery), document, new UpdateOptions()
                    {
                        IsUpsert = true
                    });
                    if (dataResut.Count != result.ModifiedCount)
                    {
                        throw new ClientValidationError((int)ErrorCode.DB.UPDATE_DATA_COUNT_NOT_MATCH, ErrorCode.DB.UPDATE_DATA_COUNT_NOT_MATCH.ToString(), null);
                    }
                }
                else
                {
                    WriteData(collection, data);
                }
            }
            else
            {
                foreach (var item in dataResut)
                {
                    (item as JObject).Merge(data, new JsonMergeSettings
                    {
                        MergeArrayHandling = mergeType
                    });
                }
                foreach (var item in dataResut)
                {
                    if (data[CommonConst.CommonField.ID] != null)
                    {
                        item[CommonConst.CommonField.ID] = data[CommonConst.CommonField.ID];
                    }
                    MongoDB.Bson.BsonDocument document = MongoDB.Bson.Serialization.BsonSerializer.Deserialize <BsonDocument>(item.ToString());
                    string           filter            = "{" + CommonConst.CommonField.DISPLAY_ID + " : '" + item[CommonConst.CommonField.DISPLAY_ID].ToString() + "'}";
                    ReplaceOneResult result            = dbcollection.ReplaceOne(GetFilter(filter), document, new UpdateOptions()
                    {
                        IsUpsert = false
                    });
                }
            }
            return(dataResut.Count);
        }
예제 #4
0
 public static bool Write(this IDBService dbProxy, string collection, JObject data, string filter, bool overrideData = false, MergeArrayHandling mergeType = MergeArrayHandling.Union)
 {
     if (dbProxy.Update(collection, new RawQuery(filter), data, overrideData, mergeType) != 0)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #5
0
 public static bool Write(this IDBService dbProxy, string collection, JObject data, Dictionary <string, string> filters, bool overrideData = false, MergeArrayHandling mergeType = MergeArrayHandling.Union)
 {
     if (dbProxy.Update(collection, QueryBuilder(filters), data, overrideData, mergeType) != 0)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #6
0
 public long Update(string collection, FilterQuery filters, JObject data, bool overrideData = false, bool validateSchma = false, MergeArrayHandling mergeType = MergeArrayHandling.Union)
 {
     return(Update(collection, new MongoQueryBuilder(filters), data, overrideData, validateSchma, mergeType));
 }