1

現在、データを MongoDB にプルしていますが、後でこのデータを別のアプリケーションにプルする必要があります。このアプリケーションには、_id フィールドが 32 ビット整数であるという要件があります。

結果ドキュメントの _id 属性を一意の 32 ビット整数に明示的に設定してください。 ソース

ドキュメントをコレクションに挿入するために pymongo を使用しています。

def parse_tweet(in_t):
    t = {}
    t["text"] = in_t["text"]
    t["shape"] = in_t["coordinates"]["coordinates"][0], in_t["coordinates"]["coordinates"][1]
    return t

これにより、期待されるドキュメントが得られます。

{
  "_id" : ObjectId("50a0de04f26afb14f4bba03d"),
  "text" : "hello world",
  "shape" : [144.9557834, -37.8208589],
}

_id 値を明示的に 32 ビット整数に設定するにはどうすればよいですか?
600 万を超えるドキュメントを保存するつもりはありません。

4

1 に答える 1

2

IDを生成して渡すだけです。Id は何でもかまいません (配列を除く)。

def parse_tweet(in_t):
    t = {}
    t["_id"] = get_me_an_int32_id
    t["text"] = in_t["text"]
    t["shape"] = in_t["coordinates"]["coordinates"][0], in_t["coordinates"]["coordinates"][1]
    return t

その独自性を自分で管理する必要があります。MongoDB は、重複した値を保存しないことのみを保証します。しかし、独自の値を取得する場所 - それはあなたの問題です。

ここにいくつかのアイデアがあります: Autoincrementing フィールドの作成方法

于 2012-11-12T11:46:13.210 に答える