public Task mergeDocumentsBatchAsync <OriginalObjectType>(string[] ids, OriginalObjectType[] patchDocument, IClientSessionHandle?session) { if (ids.Length != patchDocument.Length) { throw new InvalidOperationException($"{nameof(ids)} collection and {nameof(patchDocument)} have different size"); } var bulkOps = new List <WriteModel <OriginalObjectType> >(); var idName = GE.PropertyName <MongoEntity>(x => x._id, false); for (int i = 0; i < ids.Length; i++) { var update = new BsonDocument() { { "$set", patchDocument[i].ToBsonDocument() } }; bulkOps.Add(new UpdateOneModel <OriginalObjectType>( Builders <OriginalObjectType> .Filter.Eq(idName, new ObjectId(ids[i])), update) { IsUpsert = false }); } return(session == null ? getCollection <OriginalObjectType>().BulkWriteAsync(bulkOps) : getCollection <OriginalObjectType>().BulkWriteAsync(session, bulkOps)); }
private static BsonDocument addIsLikedByField(string requesterId) { var input = GE.PropertyName <SomeEntity>(x => x.likedBy, false); var isLikedField = GE.PropertyName <SomeEntityProjection>(x => x.isLiked, false); return(new BsonDocument("$addFields", MongoHelper.addFieldAnyElementInTemplate(input, string.Empty, requesterId, isLikedField))); }
public Task mergeDocumentAsync <OriginalObjectType>(string documentId, OriginalObjectType patchDocument, IClientSessionHandle?session) { var filter = Builders <OriginalObjectType> .Filter.Eq(GE.PropertyName <MongoEntity>(x => x._id, false), new ObjectId(documentId)); var update = new BsonDocument() { { "$set", patchDocument.ToBsonDocument() } }; return(session == null? getCollection <OriginalObjectType>().UpdateOneAsync(filter, update) : getCollection <OriginalObjectType>().UpdateOneAsync(session, filter, update)); }