使用 C# 驱动程序序列化 BsonArray
Serializing a BsonArray with C# driver
问题:我有一个包含两个数组的 Mongo 文档。其中一个数组很大,带有子文档。这个连载没有问题。另一个是这种类型的简单数组:
员工组{"Tech","Sales"}
这个就不连载了。我得到错误说它是一个 BsonArray。我最接近的序列化它会产生一个字符串。我需要一个 JSON 对象。
打码时间:
public class specialtyGroup
{
public ObjectId _id { get; set; }
public string name { get; set; }
public string location { get; set; }
public coachConfig config { get; set; }
public schedules[] coaches { get; set; }
public BsonArray staffgroups { get; set; }
}
网络服务:
public void GetGroups()
{
var client = new MongoClient();
var db = client.GetDatabase("MongoTul");
var coll = db.GetCollection<specialtyGroup>("specialtyGroups");
string cname = HttpContext.Current.Request.Params["loc"];
var creatures = coll.Find(b => b.location == cname)
.ToListAsync()
.Result;
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Write(js.Serialize(creatures));
}
我试过使用聚合和投影。我已经尝试为 staffgroups 创建一个额外的 class (这适用于我的复杂数组)。还有其他一些事情。都不行。
最常见的错误如下所示:无法将类型“MongoDB.Bson.BsonString”的对象转换为类型“MongoDB.Bson.BsonBoolean”。
我在这里发帖前花了好几个小时,发帖后我在 30 分钟内弄明白了。对不起。
答案是 staffgroups 应该是“public string[] staffgroups {get; set;}
所以如果像我这样的其他乡巴佬有这个问题,那就是答案。
问题:我有一个包含两个数组的 Mongo 文档。其中一个数组很大,带有子文档。这个连载没有问题。另一个是这种类型的简单数组:
员工组{"Tech","Sales"}
这个就不连载了。我得到错误说它是一个 BsonArray。我最接近的序列化它会产生一个字符串。我需要一个 JSON 对象。
打码时间:
public class specialtyGroup
{
public ObjectId _id { get; set; }
public string name { get; set; }
public string location { get; set; }
public coachConfig config { get; set; }
public schedules[] coaches { get; set; }
public BsonArray staffgroups { get; set; }
}
网络服务:
public void GetGroups()
{
var client = new MongoClient();
var db = client.GetDatabase("MongoTul");
var coll = db.GetCollection<specialtyGroup>("specialtyGroups");
string cname = HttpContext.Current.Request.Params["loc"];
var creatures = coll.Find(b => b.location == cname)
.ToListAsync()
.Result;
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Write(js.Serialize(creatures));
}
我试过使用聚合和投影。我已经尝试为 staffgroups 创建一个额外的 class (这适用于我的复杂数组)。还有其他一些事情。都不行。
最常见的错误如下所示:无法将类型“MongoDB.Bson.BsonString”的对象转换为类型“MongoDB.Bson.BsonBoolean”。
我在这里发帖前花了好几个小时,发帖后我在 30 分钟内弄明白了。对不起。
答案是 staffgroups 应该是“public string[] staffgroups {get; set;}
所以如果像我这样的其他乡巴佬有这个问题,那就是答案。