From 3b7657bb0b0629c9c6fd3d7f76e847552bc7f2cf Mon Sep 17 00:00:00 2001 From: enisn Date: Mon, 28 Dec 2020 16:40:34 +0300 Subject: [PATCH] CmsKit - Fix Unsupported mongo query --- .../CmsKit/MongoDB/Tags/MongoTagRepository.cs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs index 6844c9a064..5f57d835f5 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs @@ -8,6 +8,7 @@ using System.Threading.Tasks; using Volo.Abp.Domain.Repositories.MongoDB; using Volo.Abp.MongoDB; using Volo.CmsKit.Tags; +using Tag = Volo.CmsKit.Tags.Tag; namespace Volo.CmsKit.MongoDB.Tags { @@ -31,7 +32,7 @@ namespace Volo.CmsKit.MongoDB.Tags cancellationToken); } - public Task GetAsync( + public Task GetAsync( [NotNull] string entityType, [NotNull] string name, Guid? tenantId = null, @@ -44,7 +45,7 @@ namespace Volo.CmsKit.MongoDB.Tags cancellationToken: cancellationToken); } - public Task FindAsync( + public Task FindAsync( [NotNull] string entityType, [NotNull] string name, Guid? tenantId = null, @@ -57,7 +58,7 @@ namespace Volo.CmsKit.MongoDB.Tags cancellationToken: cancellationToken); } - public virtual async Task> GetAllRelatedTagsAsync( + public virtual async Task> GetAllRelatedTagsAsync( [NotNull] string entityType, [NotNull] string entityId, Guid? tenantId = null, @@ -65,13 +66,15 @@ namespace Volo.CmsKit.MongoDB.Tags { var entityTagIds = await DbContext.EntityTags.AsQueryable() .Where(q => q.EntityId == entityId && q.TenantId == tenantId) - .Select(q => q.EntityId) + .Select(q => q.TagId) .ToListAsync(cancellationToken: GetCancellationToken(cancellationToken)); - var query = GetMongoQueryable() - .Where(x => x.EntityType == entityType && - x.TenantId == tenantId && - entityTagIds.Contains(x.Id.ToString())); + var query = await Collection.FindAsync(Builders.Filter.And(new[] + { + Builders.Filter.Eq(x =>x.EntityType, entityType), + Builders.Filter.Eq(x =>x.TenantId, tenantId), + Builders.Filter.In(x => x.Id, entityTagIds), + })); var result = await query.ToListAsync(cancellationToken: GetCancellationToken(cancellationToken)); return result;