diff --git a/Core.Blueprint.Mongo/Contracts/ICollectionRepository.cs b/Core.Blueprint.Mongo/Contracts/ICollectionRepository.cs
index 644452d..92dd967 100644
--- a/Core.Blueprint.Mongo/Contracts/ICollectionRepository.cs
+++ b/Core.Blueprint.Mongo/Contracts/ICollectionRepository.cs
@@ -148,5 +148,13 @@ namespace Core.Blueprint.Mongo
         /// An expression used to filter the documents to delete.
         /// A  representing the asynchronous operation.
         Task DeleteManyAsync(Expression> filterExpression);
+
+        /// 
+        /// Executes an aggregation pipeline and returns the first document in the result asynchronously.
+        /// 
+        /// The type of the output document you expect from the pipeline.
+        /// The aggregation pipeline definition to execute.
+        /// The first document from the aggregation result, or null if none found.
+        Task FindOnePipelineAsync(PipelineDefinition pipeline);
     }
 }
diff --git a/Core.Blueprint.Mongo/Repositories/CollectionRepository.cs b/Core.Blueprint.Mongo/Repositories/CollectionRepository.cs
index 9214251..3f5f6a0 100644
--- a/Core.Blueprint.Mongo/Repositories/CollectionRepository.cs
+++ b/Core.Blueprint.Mongo/Repositories/CollectionRepository.cs
@@ -248,5 +248,16 @@ namespace Core.Blueprint.Mongo
         {
             return Task.Run(() => _collection.DeleteManyAsync(filterExpression));
         }
+
+        /// 
+        /// Executes an aggregation pipeline and returns the first document in the result asynchronously.
+        /// 
+        /// The type of the output document you expect from the pipeline.
+        /// The aggregation pipeline definition to execute.
+        /// The first document from the aggregation result, or null if none found.
+        public virtual Task FindOnePipelineAsync(PipelineDefinition pipeline)
+        {
+            return Task.Run(() => _collection.Aggregate(pipeline).FirstOrDefaultAsync());
+        }
     }
 }