0

ネストされたドキュメントに一意の制約を適用する必要があります。次に例を示します。

urlエンティティ: [
{「url」:「http://t.co/ujBNNRWb0y」、「display_url」:「bit.ly/11JyiVp」、「expanded_url」:
"http://bit.ly/11JyiVp"} ,
{「url」:「http://t.co/DeL6RiP8KR」、「display_url」:「ow.ly/i/2HC9x」、
"expanded_url" : "http://ow.ly/i/2HC9x"}
]

url、、display_urlおよびexpaned_url一意である必要があります。ensureIndexMongoDB でこの条件のコマンドを発行する方法は?

また、このようなネストされたドキュメントを持つことは良い設計ですか、それとも別のコレクションに移動してここから参照する必要がありますurlEntities?か?私はMongoDBが初めてなので、ベストプラクティスの提案は非常に役に立ちます.

完全なシナリオ:

何百万ものデータを持つデータベースに以下のようなドキュメントがあるとします:

{ "_id" : { "$oid" : "51f72afa3893686e0c406e19"} , "user" : "test" , "urlEntities" : [ { "url" : "http://t.co/64HBcYmn9g" , "display_url" : "ow.ly/nqlkP" , "expanded_url" : "http://ow.ly/nqlkP"}] , "カウント" : 0}

同様のオブジェクトを含む別のドキュメントを取得したらurlEntities、ユーザー フィールドとカウント フィールドのみを更新する必要があります。まず、フィールドに一意の制約を適用しurlEntities、例外を処理してから更新することを考えました。そうしないと、挿入する前に各エントリが存在するかどうかを確認すると、パフォーマンスに大きな影響を与えます。では、どうすれば一意性を強制できurlEntitiesますか? 私は試した

{"urlEntities.display_url":1,"urlEntities.expanded_url":1},{unique:true}

それでも、例外なく同じドキュメントを 2 回挿入できます。

4

2 に答える 2