是否有可能选择Specfiic字段从随机检索BsonDocument?

时间:2019-02-02 19:32:35

标签: c# asp.net mongodb

我正在使用以下代码从MongoDB数据库中检索随机文档(客户端,数据库和收集参数已被有意更改)。

[HttpGet]
public ActionResult<BsonDocument> Get()
{
    var client = new MongoClient(CLIENT);
    var database = client.GetDatabase(DATABASE);
    var collection = database.GetCollection<BsonDocument>(COLLECTION);


    var document = collection.AsQueryable().Sample(1).First();

    Response.ContentType = "application/json";

    return document;
}
  

[{“ name”:“ _ id”,“ value”:“ 5c4f2f7b9914ed3a4b8a9b8f”},{“ name”:“ id”,“ value”:3470264},{“ name”:“ coord”,“ value” :[{{name“:” lon“,” value“:-48.479172},{” name“:” lat“,” value“:-20.94944}]},{” name“:” country“,” value“ :“ BR”},{“ name”:“ geoname”,“ value”:[{“ name”:“ cl”,“ value”:“ P”},{“ name”:“ code”,“ value” : “PPL”},{ “名称”: “父”, “值”:3448433}]},{ “名称”: “LANGS”, “值”:[[{ “名称”: “链接”,“值“:” {http://en.wikipedia.org/wiki/Bebedouro“}]]}},{”名称“:”名称“,”值“:” Bebedouro“},{”名称“:” stat“,”值“:[{”名称“ :“级别”,“值”:1.0},{“名称”:“人口”,“值”:71862}]},{“名称”:“站点”,“值”:[[{“名称”: “ id”,“ value”:4566},{“ name”:“ dist”,“ value”:76},{“ name”:“ kf”,“ value”:1}]]},{“ name” :“ zoom”,“ value”:9}]

但是,由于某些记录比其他记录包含更多的字段,因此我想选择一个特定的两个字段进行进一步处理。使用上面的结果,这些将是:

  

{“名称”:“国家”,“值”:“ BR”} {“名称”:“名称”,“值”:“ Bebedouro”}

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

经过一番思考,我找到了解决问题的方法。

1)方法的结果更改为元组。
2)检索了城市和国家这两个字段的值,并将其转换为字符串。
3)将两个值添加到元组。

[HttpGet]
public ActionResult<Tuple<string, string>> Get()
{
    var client = new MongoClient(CLIENT);
    var database = client.GetDatabase(DATABASE);
    var collection = database.GetCollection<BsonDocument>(COLLECTION);

    var document = collection.AsQueryable().Sample(1).First();

    var city = document.GetValue("name").ToString();
    var country = document.GetValue("country").ToString();

    Tuple<string, string> result = new Tuple<string, string>(city, country);

    Response.ContentType = "application/json";

    return result;
}

现在结果如下。

  

{“ item1”:“ Lakewood”,“ item2”:“ US”}