Example #1
0
        private static FilterDefinition <TDocument> GetItemFilter(ObjectId documentId, ObjectId itemId)
        {
            var documentFilter = documentId.BuildDocumentFilter <TDocument>();
            var itemFilter     = Builders <TDocument> .Filter.ElemMatch(x => x.Items, x => x.Id == itemId);

            return(Builders <TDocument> .Filter.And(documentFilter, itemFilter));
        }
Example #2
0
        public static async Task <TDocument> FindDocument <TDocument>(this IMongoCollection <TDocument> collection, ObjectId documentId, CancellationToken cancellationToken)
            where TDocument : IDocumentWithId
        {
            var filter = documentId.BuildDocumentFilter <TDocument>();

            var options = new FindOptions <TDocument>
            {
                Limit = 1,
            };

            using var cursor = await collection.FindAsync(filter, options, cancellationToken);

            var document = await cursor.FirstOrDefaultAsync(cancellationToken);

            if (document == null)
            {
                throw new NotFoundException($"The document with id of {documentId} was not found");
            }

            return(document);
        }
Example #3
0
        private Task UpdateDocument(ObjectId documentId, UpdateDefinition <TDocument> update, CancellationToken cancellationToken)
        {
            var documentFilter = documentId.BuildDocumentFilter <TDocument>();

            return(UpdateDocument(documentId, documentFilter, update, cancellationToken));
        }