我在MongoLab中使用以下JSON(并验证了它)我的集合:
[{
"city": "ACMAR",
"pop": 6055,
"state": "AL",
"_id": "35004"
},
{
"city": "ADAMSVILLE",
"pop": 10616,
"state": "AL",
"_id": "35005"
},
{
"city": "ADGER",
"pop": 3205,
"state": "AL",
"_id": "35006"
}]
但是我一直收到这个错误:BasicBSONList只能使用数字键,而不是:[_ id]。那么我做错了什么?
答案 0 :(得分:3)
我想我可能知道问题是什么,但你能详细说明一些事情吗?这是您的集合中的文档列表还是包含在较大文档中的列表?你准确地得到错误的地方?
MongoLab文档编辑器只接受一个文档({}而不是[]),它目前不支持批量插入。
如果你在代码中遇到这个问题,那么通过做一些假设,我可以推测如果提供的JSON是“数据”那么:
数据是BasicBSONList(或BasicDBList),无法通过调用.get(“somefieldname”)来访问。相反,要么:
a)迭代列表的元素以访问它们:
for(BasicDBObject doc : data) { String id = (String) doc.get("_id"); }
b)使用已知的列表索引作为中介
String _id = (String) ((DBObject)data.get(1)).get("_id"); //or
String _id = (String) ((DBObject)data.get("1")).get("_id");
这是因为,在引擎盖下,BSONList看起来像:
{
"0": {
"city": "ACMAR",
"pop": 6055,
"state": "AL",
"_id": "35004"
},
"1": {
"city": "ADAMSVILLE",
"pop": 10616,
"state": "AL",
"_id": "35005"
},
"2": {
"city": "ADGER",
"pop": 3205,
"state": "AL",
"_id": "35006"
}
}
请告诉我这是否有帮助!
感激, 埃里克@ MongoLab