2017-02-21 15 views
5

db.testCollection.createIndex({ _id: 1 }, {name: "_id_2", unique: true, background: true})コマンドは、mongoバージョン3.4.2では3.2.11ではなく失敗します。 mongoのドキュメントは、バージョン3.4がuniquebackgroundの両方の属性をサポートしていることを示しています。モンゴの3.4.2が失敗したmongodb 3.4.2 InvalidIndexSpecificationOptionエラー: 'unique'フィールドが_idインデックス指定に無効です

...

> use testDB 
switched to db testDB 
> db.testCollection.createIndex({ _id: 1 }, {name: "_id_2", unique: true, background: true}) 
{ 
    "ok" : 0, 
    "errmsg" : "The field 'unique' is not valid for an _id index specification. Specification: { ns: \"testDB.testCollection\", v: 1, key: { _id: 1.0 }, name: \"_id_2\", unique: true, background: true }", 
    "code" : 197, 
    "codeName" : "InvalidIndexSpecificationOption" 
} 
> 

モンゴ3.2.11作品...

> use testDB 
switched to db testDB 
> db.testCollection.createIndex({ _id: 1 }, {name: "_id_2", unique: true, background: true}) 
{ 
    "createdCollectionAutomatically" : false, 
    "numIndexesBefore" : 1, 
    "numIndexesAfter" : 1, 
    "note" : "all indexes already exist", 
    "ok" : 1 
} 
> 

誰でも周りの仕事を知っていますか?

Mongooseインデックスを作成するためにMongoose Node.jsラッパーを使用しているため、unique属性とbackground属性を追加しないことはオプションではありません。

乾杯!どのような最初の1:

エドユニークがここでの問題ではないことを

答えて

2

は...それはその_idだ、すでにインデックス(自動的に作成)しがまったく同じフィールド(1 _id)を持っているものを2番目のインデックスを作成することはできません持っているもの持ってる。

_id以外のフィールドでテストするのはいかがですか?そのフィールドにはインデックスが存在しない限り、一意でありバックグラウンドが可能であることがわかります。

+1

ありがとうございました.Jussi、that's it。冗長なインデックス作成要求を指摘していた3.2.11の注釈を私は突き止めなかった。あなたがそれを指摘したので、今明らかです。 – icedawn

1

mongodb3.4では、一意で背景は_idフィールドでサポートされていませんが、他のフィールドは可能です。

関連する問題