0

「_id」フィールドとして複合キーを作成しようとしています。このフィールドには、地理情報やその他の属性が含まれています。次のようになります。

{_id: {lat: 50, lon: 50, name: "some name"}}

ドキュメントを作成した後、mongoはデフォルトでインデックスを割り当て、私のコマンドを無視します

db.coll.ensureIndex(_id: "2d")

_idフィールドをgeo-indexとregularindexの両方でインデックス化できるようにする方法はありますか?

4

2 に答える 2

1

ここには2つのオプションがあります。どちらもスキーマを変更する必要があります。

  1. 一意_idのハッシュを作成し、2Dインデックスを使用して別のフィールドに座標を入力します。

    {_id: "標準のObjectIdまたはハッシュ"、name: "some name"、loc:[50、50]}

  2. 本当に_idを唯一のフィールドにしたい場合(これはお勧めしません):

    {_id:{name: "some name"、loc:[50、50]}}

    db.coll.ensureIndex({'_ id.loc': '2d'})

于 2011-02-17T19:04:36.013 に答える
0

MongoDBドキュメントから:

ユーザーは、IDを作成するために独自の規則を使用できます。_id値は、一意である限り、配列以外の任意のタイプにすることができます。配列はマルチキーであるため、許可されていません。

また、これらも一意であることを確認する必要があります。また、これはあなたがBSONIDを持っていると推定するいくつかのことを台無しにします

これらのフィールドに独自のインデックスを付けて、複合インデックスを作成します。

http://www.mongodb.org/display/DOCS/Object+IDs

于 2011-02-17T19:05:50.647 に答える