无法获取变量中的值

Trouble Fetching Value in Variable

基本上这是我遇到问题的代码。 mongoDB 的疯狂新手,很想了解如何从变量 'line'.

中的 returns 的 JSON 字符串中获取值
public string get_data()
        {
            var client = new MongoClient();
            var db = client.GetDatabase("test");
            var collection = db.GetCollection<BsonDocument>("metacorp");
            var cursor = collection.Find("{'movie_name' : 'Hemin'}").ToCursor();
            var line = "";
            foreach (var document in cursor.ToEnumerable())
            {
                using (var stringWriter = new StringWriter())
                using (var jsonWriter = new JsonWriter(stringWriter))
                {
                    var context = BsonSerializationContext.CreateRoot(jsonWriter);
                    collection.DocumentSerializer.Serialize(context, document);
                    line = stringWriter.ToString();

                }
            }
            var js = new JavaScriptSerializer();
            var d = js.Deserialize<dynamic>(line);
            var a  = d["movie_name"];
            return line;
        }

这是我在 return 行时得到的输出:

{ "_id" : ObjectId("58746dcafead398e4d7233f5"), "movie_name" : "Hemin" }

我希望能够将值 'Hemin' 提取到 'a'。

我知道这不是您要的,但由于您使用的是 c# 驱动程序,因此我会推荐以下内容。假设您有一个 c# class 对应于 metacorp 集合或至少一个处理它的序列化程序。希望对你有帮助。

var client = new MongoClient();
var db = client.GetDatabase("test");
var collection = db.GetCollection<MetaCorp>("metacorp");
var m = collection.SingleOrDefault(x => x.Movie_Name == "Hemin"); // Assuming 0 or 1 with that name. Use Where otherwise
var movieName = "Not found";
if(m!= null)
   movieName = m.Movie_Name;

您可以为电影创建 dto class,然后从集合中获取数据:

public class Movie
{
    public ObjectId Id { get; set; }
    public string movie_name { get; set;}
}

...

var client = new MongoClient();
var db = client.GetDatabase("test");
var collection = db.GetCollection<BsonDocument>("metacorp");

var movies = collection.Find(x=>x.movie_name == "Hemin").ToEnumerable();