【问题标题】:error when creating object in collection in mongolab: BasicBSONList can only work with numeric keys, not: [_id]在 mongolab 的集合中创建对象时出错:BasicBSONList 只能使用数字键,而不是:[_id]
【发布时间】:2013-05-12 18:03:28
【问题描述】:

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

【问题讨论】:

  • 您是否尝试将其插入到集合中?

标签: mongodb mlab


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多