选择不同的mongodb C#

Kon*_*rad 5 c# mongodb

我必须从简单的mongo db数据库中选择不同的记录.我有很多简单的记录,这些记录看起来像这样:

{"word":"some text"}
Run Code Online (Sandbox Code Playgroud)

我的代码非常简单.

    const string connectionString = "mongodb://localhost";
    var client = new MongoClient(connectionString);

    MongoServer server = client.GetServer();
    MongoDatabase database = server.GetDatabase("text8");
    MongoCollection<Element> collection = database.GetCollection<Element>("text8");
    MongoCursor<Element> words = (MongoCursor<Element>)collection.FindAll();
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从数据库中选择不同的单词.有人可以给我一些建议吗?

Sha*_*had 9

MongoDB API有一个distinct聚合命令,它返回为集合中指定键找到的不同值.你也可以在C#Driver中使用它:

var distinctWords = collection.Distinct("word");
Run Code Online (Sandbox Code Playgroud)

where collection- 是您示例中的实例.此查询将返回word集合中字段的所有不同值.

另外,正如@JohnnyHK在评论中提到的,你可以使用linq方法,因为它受C#驱动程序的支持:

var distinctWords = collection.AsQueryable<Element>().Select(e => e.Word).Distinct();
Run Code Online (Sandbox Code Playgroud)

  • C#驱动程序提供的LINQ接口通过MongoDB执行其查询,因此它不会检索所有记录,然后在代码中过滤它们,并且通常效率很高. (5认同)

Hyl*_*ean 1

我的猜测是让“word”成为该数据库的索引。然后使用一些 linq 在一个简单的表达式中查询它: var res = col.Query().Select(e => e.word).Distinct();

这将导致读取索引中的所有单词。