1

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

4

1 回答 1

3

我想我可能对问题所在有所了解,但是您能详细说明一些事情吗?这是您收藏中的文档列表还是包含在更大文档中的列表?你到底在哪里得到错误?

MongoLab 文档编辑器只接收一个文档({} 而不是 []),目前不支持批量插入。

如果您在代码中遇到这个问题,那么通过做一些假设,我可以推测如果提供的 JSON 是“数据”,那么:

data 是一个 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"
}
}

让我知道这是否有帮助!

感谢 Eric@MongoLab

于 2013-05-17T17:54:11.497 回答