我正在尝试将BSON文档插入Mongo集合。
MongoDB.Driver.MongoCommandException:'命令插入失败:错误解析 字段文件的元素0 ::由::错误的类型引起的' 0'领域, 预期对象,发现0:[{选区:" Aberdeen North",选举:" 2010 大选",选民:64808,多数:8361,ResultOfElection:" Lab 按住",投票率:37701,TurnoutPercentage:100.0}]。'
以下是我的代码。
public void retrieveElectionResuts(string url)
{
var client = new RestClient(url);
var request = new RestRequest(Method.GET);
request.AddHeader("Accept", "application/json");
IRestResponse response = client.Execute(request);
var con = response.Content;
//Cleaning JSON format
RootObject result = JsonConvert.DeserializeObject<RootObject>(con);
List<Item> items = result.result.items;
List<ConstituencyResult> electionResults = new List<ConstituencyResult>();
MongoContext context = new MongoContext();
var db = context.connect();
var collection = db.GetCollection<BsonArray>("constituencyResult");
foreach (Item item in items)
{
ConstituencyResult constituencyResult = new ConstituencyResult
{
Constituency = item.constituency.label._value.ToString(),
Election = item.election.label._value.ToString(),
Electorate = item.electorate,
Majority = item.majority,
ResultOfElection = item.resultOfElection,
Turnout = item.turnout,
TurnoutPercentage = ((item.electorate) / (item.turnout)) * 100
};
BsonArray array = new BsonArray();
array.Add(constituencyResult.ToBsonDocument());
collection.InsertOne(array);
}
}
我尝试直接添加文档(即不将其放入BSON数组中),但这仍然会引发错误。
答案 0 :(得分:0)
您无法将BsonArray
添加到集合中,因为MongoDB文档是一组具有关联值的键。添加数组时,关键是什么?
你当然可以拥有一个包含数组的字段。它可以通过以下方式添加:
var collection = database.GetCollection<Object>("constituencyResult");
collection.InsertOne(new
{
SomeArray = array
});
在这种情况下,文档将包含将保存数组数据的SomeArray
字段。
我尝试过直接添加文档(即不将其放入 BSON Array),但这仍然会引发错误。
如果建议的答案不是您所需要的,并且在将ConstituencyResult
个对象添加到集合时会出现例外情况,请使用ConstituencyResult
的定义和您获得的例外情况更新您的问题。