Mongoose / MongoDBでのマルチフィールドインデックスの作成


93

Mongoosejsでマルチフィールドインデックスを作成する方法についてのドキュメントを見つけようとしていますが、役に立ちません。特に、インデックスを付けて一意にする必要がある2つのフィールドがあります。2つのフィールドにインデックスを付けるマングーススキーマの例は何ですか?

回答:


196

ここに示すようindexに、Schemaオブジェクトのメソッドを呼び出してそれを行います。あなたの場合、それは次のようになります。

mySchema.index({field1: 1, field2: 1}, {unique: true});

2
これは、mongodbではCompountIndexと呼ばれます。したがって、field1およびfield1 + field2としてインデックスを作成します。したがって、最初はフィールド1によるインデックスであり、次にフィールド2に関してフィールド1内にあります
Ketan Ghumatkar 2015

1
field1の後の1とfield2の意味は何ですか?
Damon Yuan

9
@DamonYuanインデックス内のフィールドの並べ替え順序を設定します。1上昇している、-1下降しているでしょう。
JohnnyHK 2015年

1
@KetanGhumatkarこれは、への呼び出しでオブジェクトにフィールドがリストされている順序に基づいていますindex
JohnnyHK 2016年

2
1-1 インデックスフィールドに昇順または降順のインデックスキーを指定します。私が見つかりましたドキュメントhttp://mongodb.github.io/node-mongodb-native/2.1/tutorials/create-indexes/
タイ・ハ

11

複合インデックスを作成するときは、スキーマレベルでインデックスを定義する必要があります。

animalSchema.index({ name: 1, type: -1 });

参照:http//mongoosejs.com/docs/guide.html#indexes


5
1と-1の意味は何ですか?あなたが参照したドキュメントでこれを見つけることができませんでした。ありがとう。
DFB 2015年

2
このページで答えを見つけました:docs.mongodb.org/manual/core/indexes-introductionありがとう!
DFB 2015年

0

ちなみに、受け入れられた答えは間違っています。https://stackoverflow.com/a/52553550/129300に従って、フィールド名を一重引用符で囲む必要があります。

mySchema.index({'field1': 1, 'field2': 1}, {unique: true});

ハッピーデイ!


JSのオブジェクトキーは、構文的に有効な識別子である限り、引用符で囲むことができません。field1およびfield2は有効な識別子です。field1.fooたとえば、そうではありません。
ガス

-3
    Following command can be used to create compound index for nested json:
    db.ACCOUNT_collection.createIndex({"account.id":1,"account.customerId":1},{unique:1}) 
Mongo json structure is like :
{"_id":"648738"
 "account": { 
    "id": "123",
    "customerId": 7879,
    "name": "test"
   ..
   ..

  }
}

サンプルデータでテストしましたが、期待どおりに完全に機能しています。


マングースシェルでは必要ありません。ノードjsスキーマでは必要ありません
Rohit Nishad
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.