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 ドキュメント エディタは 1 つのドキュメント ([] ではなく {}) しか取りません。現時点ではバッチ挿入をサポートしていません。

コードでこの問題が発生している場合、いくつかの仮定を行うことで、提供された 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 に答える