コレクションに入れているオブジェクトの「スキーマ」は、次のようになります。
{
name : "Niranjan", //<--key
children : ["Suraj", "kalidas", "Suraj"]
}
ただし、子がセットとして扱われるようにしたかったのです。上記の例では、「Suraj」が配列に2回表示されるため、Mongoがレコードを受け入れないようにしました。
名前と子に対して一意のインデックスを作成してみました
db.folks.ensureIndex({name:1,children:1},{unique:true})
ただし、これが行うことは、任意の子名+フォーク名に対してグローバルに一意のインデックスを作成することです。つまり、名前に一意のインデックスがない場合は、次のことができます。
db.folks.insert({name:'p',children:['c1','c2']})
db.folks.insert({name:'p',children:['c3']})
p + c1、p + c2、p+c3は異なるためです。以下を挿入しようとした場合:
db.folks.insert({name:'p',children:['c4','c1']})
その後、私は取得します
E11000 duplicate key error index: test.folks.$name_1_children_1 dup key: { : "p", : "c1" }
https://stackoverflow.com/questions/9640233/unique-array-values-in-mongooseのように、挿入中にチェックを行わずにこれを実現する方法はあり ますか?