public static Task <TResult> LoadDocumentAs <T, TResult>( this IMongoDatabase database, string id, Expression <Func <T, TResult> > projection, MongoCollectionName collectionName, CancellationToken cancellationToken = default ) where T : Document => database.GetDocumentCollection <T>(collectionName).LoadDocumentAs(id, projection, cancellationToken);
public static Task <long> UpdateManyDocuments <T>( this IMongoDatabase database, MongoCollectionName collectionName, FilterDefinition <T> filter, UpdateDefinition <T> update, CancellationToken cancellationToken = default ) where T : Document => database.GetDocumentCollection <T>(collectionName).UpdateManyDocuments(filter, update, cancellationToken);
public static Task UpdateDocument <T>( this IMongoDatabase database, string id, MongoCollectionName collectionName, UpdateDefinition <T> update, CancellationToken cancellationToken = default ) where T : Document => database.GetDocumentCollection <T>(collectionName).UpdateDocument(id, update, cancellationToken);
public static Task <TResult> LoadDocumentAs <T, TResult>( this IMongoDatabase database, string id, Func <ProjectionDefinitionBuilder <T>, ProjectionDefinition <T> > projection, MongoCollectionName collectionName, CancellationToken cancellationToken = default ) where T : Document => database.GetDocumentCollection <T>(collectionName).LoadDocumentAs <T, TResult>(id, projection, cancellationToken);
private MongoCollection GetCollection(object container) { // Prefer the collection provided in ctor over the one given during id generation MongoDatabase db = this.mongoDb ?? ((MongoCollection)container).Database; string collectionName = MongoCollectionName.Get <Identity>(); return(db.GetCollection(collectionName)); }
public Repository(IConnect connect) { this.Connect = connect; MongoCollectionName mongoCollectionName = (MongoCollectionName)Attribute.GetCustomAttribute(typeof(T), typeof(MongoCollectionName)); this.CollectionName = (mongoCollectionName != null ? mongoCollectionName.TableName : typeof(T).Name.ToLower()); mongoCollectionName = null; this.Collection = this.Connect.Collection <T>(this.CollectionName); }
public static IMongoCollection <T> GetDocumentCollection <T>( this IMongoDatabase database, MongoCollectionName?collectionName, MongoCollectionSettings?settings ) where T : Document => database.GetCollection <T>( collectionName == null ? MongoCollectionName.For <T>() : collectionName, settings );
public static List <T> FindDocumentByPage <T>(MongoCollectionName collectionName, Dictionary <string, string> queryCondition, int pageIndex, int pageSize, string sortKey, MongoSortTypeEnum sortType) { var database = mongoClient.GetDatabase(Configurations.mongoDBName); var collection = database.GetCollection <BsonDocument>(GetCollectionNameFromCollectionEnum(collectionName)); var bsonDoc = GenerateFilterDocumentFromDict(collection, queryCondition); FilterDefinition <BsonDocument> filter = bsonDoc; return(FindDocumentByPage <T>(collectionName, filter, pageIndex, pageSize, sortKey, sortType)); }
public static IMongoQueryable <T> AsQueryable <T>( this IMongoDatabase database, MongoCollectionName collectionName, Action <AggregateOptions> configure = null ) where T : Document { var options = new AggregateOptions(); configure?.Invoke(options); return(database.GetDocumentCollection <T>(collectionName).AsQueryable(options)); }
internal void SetCollectionName() { MongoCollectionName mongoCollectionName = (MongoCollectionName)typeof(TEntity) .GetTypeInfo() .GetCustomAttribute(typeof(MongoCollectionName)); _collectionName = mongoCollectionName != null ? mongoCollectionName.TableName : typeof(TEntity).Name.ToLower(); mongoCollectionName = null; }
public static void InsertDocument(MongoCollectionName collectionName, object data) { try { var database = mongoClient.GetDatabase(Configurations.mongoDBName); var collection = database.GetCollection <BsonDocument>(GetCollectionNameFromCollectionEnum(collectionName)); var bsonDoc = GenerateBsonDocumentFromObject(data, collection); collection.InsertOne(bsonDoc); } catch (Exception e) { throw e; } }
public static int Count(MongoCollectionName collectionName, Dictionary <string, string> queryCondition) { try { var database = mongoClient.GetDatabase(Configurations.mongoDBName); var collection = database.GetCollection <BsonDocument>(GetCollectionNameFromCollectionEnum(collectionName)); var bsonDoc = GenerateFilterDocumentFromDict(collection, queryCondition); FilterDefinition <BsonDocument> filter = bsonDoc; var bsonList = collection.Find(filter).Count(); return(Convert.ToInt32(bsonList)); } catch (Exception e) { throw e; } }
public static T FindLastByKey <T>(MongoCollectionName collectionName, string sortKey) { var database = mongoClient.GetDatabase(Configurations.mongoDBName); var collection = database.GetCollection <BsonDocument>(GetCollectionNameFromCollectionEnum(collectionName)); var filter = Builders <BsonDocument> .Filter.Exists(sortKey); SortDefinition <BsonDocument> sort = Builders <BsonDocument> .Sort.Descending(sortKey); var bson = collection.Find(filter).Sort(sort).Project(projection).FirstOrDefault(); if (bson == null) { return(default(T)); } string json = DeserializeBsonDocumentToJson(collection, bson); T result = JsonConvert.DeserializeObject <T>(json); return(result); }
public static void RemoveDocument(MongoCollectionName collectionName, Dictionary <string, string> removeCondition, bool allowEmptyRemove = false) { var database = mongoClient.GetDatabase(Configurations.mongoDBName); var collection = database.GetCollection <BsonDocument>(GetCollectionNameFromCollectionEnum(collectionName)); var bsonDoc = GenerateFilterDocumentFromDict(collection, removeCondition); FilterDefinition <BsonDocument> filter = bsonDoc; var result = collection.DeleteMany(filter); if (result.IsAcknowledged == true) { if (result.DeletedCount == 0 && !allowEmptyRemove) { throw new ROException("数据删除失败"); } } else { throw new Exception("unknown mongo exception"); } }
public static void UpdateDocument(MongoCollectionName collectionName, Dictionary <string, string> queryCondition, MongoUpdateModel updateCondition, bool allowEmptyUpdate = false) { var database = mongoClient.GetDatabase(Configurations.mongoDBName); var collection = database.GetCollection <BsonDocument>(GetCollectionNameFromCollectionEnum(collectionName)); var conditionDoc = GenerateFilterDocumentFromDict(collection, queryCondition); var filter = conditionDoc; var update = GenerateUpdateDocument(updateCondition, collection); var result = collection.UpdateMany(filter, update); if (result.IsAcknowledged == true) { if (result.ModifiedCount == 0 && !allowEmptyUpdate) { throw new ROException("数据更新失败"); } } else { throw new Exception("数据更新失败"); } }
public static void ReplaceDocument(MongoCollectionName collectionName, Dictionary <string, string> queryCondition, object data) { var database = mongoClient.GetDatabase(Configurations.mongoDBName); var collection = database.GetCollection <BsonDocument>(GetCollectionNameFromCollectionEnum(collectionName)); var conditionDoc = GenerateFilterDocumentFromDict(collection, queryCondition); FilterDefinition <BsonDocument> filter = conditionDoc; var update = GenerateBsonDocumentFromObject(data, collection); var result = collection.ReplaceOne(filter, update); if (result.IsAcknowledged == true) { if (result.ModifiedCount == 0) { throw new ROException("数据更新失败"); } } else { throw new Exception("数据更新失败"); } }
public static IMongoCollection <T> GetDocumentCollection <T>( this IMongoDatabase database, MongoCollectionSettings settings ) where T : Document => GetDocumentCollection <T>(database, MongoCollectionName.For <T>(), settings);
public static IMongoCollection <T> GetDocumentCollection <T>(this IMongoDatabase database, MongoCollectionName collectionName = null) where T : Document => GetDocumentCollection <T>(database, collectionName ?? MongoCollectionName.For <T>(), null);