【问题标题】:MongoDb Driver 2.0 C# Filter and AggregateMongoDb Driver 2.0 C# 过滤和聚合
【发布时间】:2015-04-23 02:11:53
【问题描述】:

我正在使用 mongodb 2.0 的新驱动程序,并希望添加一些分面搜索(临时移动,在使用弹性搜索之前)。

这是我创建的用于构建聚合的一些方法。我想它应该可以工作。

作为参数,我还在方法中传递了一个过滤器定义。 但我没有找到如何将我的聚合限制在过滤器中。

有什么想法吗???

    private void UpdateFacets(SearchResponse response, FilterDefinition<MediaItem> filter, ObjectId dataTableId)
    {

        response.FacetGroups =new List<SearchFacetGroup>();

        SearchFacetGroup group = new SearchFacetGroup()
        {
            Code = "CAMERAMODEL",
            Display = "Camera model",
            IsOptional = false
        };

        using (IDataAccessor da = NodeManager.Instance.GetDataAccessor(dataTableId))
        {
            var collection = da.GetCollection<MediaItem>();
            var list = collection.Aggregate()
                .Group(x => ((ImageMetaData) x.MetaData).Exif.CameraModel, g => new { Model = g.Key, Count = g.Count() })
                .ToListAsync().Result;


            foreach (var l in list)
            {
               group.Facets.Add(new SearchFacetContainer()
               {
                   Code = l.Model,
                   Display = l.Model,
                   Hits = l.Count, 
                   IsSelected = false
               });
            }
        }

        response.FacetGroups.Add(group);
    }

【问题讨论】:

    标签: c# mongodb filtering grouping facets


    【解决方案1】:

    我没有使用 facet,但是使用 Mongo 驱动程序 Aggregate 具有接受过滤器定义的 .Match 操作。

    collection1.Aggregate().Match(filter)
    

    【讨论】:

    • 看起来不错 :=) 我尝试将 Match 放在 group 之后 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2021-07-26
    • 2020-03-29
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多