2011-02-17 3 views
0

"_id"フィールドとして複合キーを作成しようとしています。これは、いくつかの地理情報と他の属性を取り入れています。私は私の_idフィールドインデックスを持つことができますこれを行う方法があります私のコマンドMongoの1つのフィールドに複数のインデックスを作成できますか?それはどう?

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

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

文書を作成した後、モンゴはデフォルトでインデックスを割り当て、無視:それは何かのように見えますジオインデックスと通常インデックスの両方で可能ですか?

答えて

1

ここには2つのオプションがあります。それらの両方は、スキーマの変更を必要とします。

  1. _id一意のハッシュを作成し、2Dのインデックスに別々のフィールドに自分の座標を置く:

    {_id:「標準のObjectIdまたはあなたのハッシュ」、名前: "いくつかの名前"、LOC:[50、50]}

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

    {_id:{名: "いくつかの名前 "、loc:[50、50]}}

    db.coll.ensureIndex({ '_ id.loc': '2D'})のMongoDBドキュメントから

0

ユーザーIDを作成するための独自の規則を使用することが歓迎されています; _id値は、配列以外の任意の型でもかまいません。配列はマルチキーであるため、使用できません。

また、これらも一意であることを確認する必要があります。また、これはあなたがBSON IDを持っていると推測するものを混乱させるでしょう

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

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

関連する問題