1

まず第一に、私はすでにこのスレッドを読みましたが、この特定の問題についてはあまり役に立ちませんでした。私はMongoDBも初めてです。

db.songsコレクションにドキュメントがあります:

{
    "title" : "Ignorance"
    "artist" : "Paramore"
    "listeners" : ["John", "Bill", "Amber"]
}

users「John」または既存のユーザーを押すたびにエラーが発生するように、キーに重複を適用しないようにします。mongo シェルでこれを行うことはできますか?もしそうなら、この動作を採用するようにコレクションを構成するにはどうすればよいですか?

重複エラー(または同様のエラー)が発生するはずのコード例:

db.songs.update({title:"Ignorance"}, {'$push':{listeners:"John"}})

前もって感謝します。

4

1 に答える 1

1
db.songs.ensureIndex({listeners:1},{unique:true})

このインデックスを追加しても機能しません。MongoDB は、一意のインデックスを使用してサブドキュメント内の一意性を保証するのではなく、コレクション全体で行います。それが、それを使用してエラーが発生する理由である可能性が非常に高いです。

代わりに、アイテムの「セット」にアイテムを追加する何かを使用することです。これは、 $addToSet ( http://docs.mongodb.org/manual/reference/operator/update/addToSet/ ) が来る場所です。の。

インデックスを削除してその演算子を使用すると、機能するはずです。

于 2014-04-08T11:06:34.160 に答える