SetFields在Mongo C#驱动程序中

时间:2014-05-14 10:38:22

标签: c# mongodb mongodb-.net-driver mongodb-query

我正在使用C#mongo驱动程序,我有如下的用户集合,

 public class User
{
    public string Name { get; set; }

    public DateField Date { get; set; }

    /*
     * Some more properties
     */

    public List<string> Slugs { get; set; } //I just need to return this property

}

我正在编写一个查询,它只返回slugs属性。 为此,我尝试使用mongo驱动程序中的SetFields(...)方法。 SetFields返回User类型的游标我希望某些东西属于我的Slugs属性类型,这样当我只需要一个属性时我就不会返回整套属性。 有可能吗?

1 个答案:

答案 0 :(得分:1)

是和否。您可以使用聚合框架的projection operator $project来更改数据的结构,但我不会这样做有两个原因:

  1. MongoDB通常会尝试保留结构,除非你强制它,特别是因为它使得更容易使用静态类型的语言(旧的对象/关系不匹配:SQL查询不能回答'在用户或博客文章中,但是从各种表中收集了一些属性的野生Chimaera,根据查询本身可能需要额外的DTO,这有点难看。
  2. 聚合框架查询有点复杂,有点慢,我不会让做一些微优化的冲动决定了很多不必要的复杂性。
  3. 毕竟,省略几个字段已经是一个微优化(设置索引覆盖了查询),但在客户端,空字段的成本应该几乎没有。