可能有点远,但是我们开始吧。假设我有以下文档定义:
公共课程Test1 {公共ObjectId ID {get; set;}公共诠释NonUniqueId {get;组; }公共字符串名称{get;组; }公共十进制价格{组; }}
使用IMongoCollection<Test1>
,我可以过滤结果以记录其中Name = "somevalue"
的结果,按Price
排序并仅返回10行。
var builder = Builders.Filters;var filter = builder.Where(x => x.Name ==“ somevalue”);var result = await collection.Find(filter).SortBy(x => x.Price).Limit(10).ToListAsync();
现在要解决的问题。如果过滤器返回了一个以上的文档(Name = "somevalue"
),并且该集合中NonUniqueId
出现了多次,则我想排除重复的NonUniqueId
,仅返回具有最低Price
的文档。
此逻辑在代码中非常容易实现:如果其中10个结果是“重复项”(即NonUniqueId
出现多次),则获取10个结果,以最小的价格保留结果,然后进行除此以外的另一次搜索[ C0]。但是,它需要多个DB调用,这并不好(在最坏的情况下,最多可达10个)。
在MongoDB中(使用C#驱动程序),有没有一种方法可以忽略基于属性的这些“重复”结果,并且理想情况下,仅返回另一个属性的最小值(或具有相同效果的任何东西?]]
可能有点远,但是我们开始吧。假设我有以下文档定义:public class Test1 {public ObjectId Id {get; set;} public int NonUniqueId {get;组; } ...