在mongolab中创建集合中的对象时出错:BasicBSONList只能使用数字键,而不是:[_ id]

时间:2013-05-17 14:14:34

标签: mongodb mlab

我在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]。那么我做错了什么?

1 个答案:

答案 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