RethinkDBでユニークなアイテムを作成する方法は?例えばRethinkDBでユニークなアイテムを作成する方法
私はこのためにensureIndex
を使用するMongoDBでは
、:
userCollection.ensureIndex({email:1},{unique:true},function(err, indexName){
RethinkDBでユニークなアイテムを作成する方法は?例えばRethinkDBでユニークなアイテムを作成する方法
私はこのためにensureIndex
を使用するMongoDBでは
、:
userCollection.ensureIndex({email:1},{unique:true},function(err, indexName){
RethinkDBは現在、主キー以外のフィールド上の一意性制約をサポートしていません。
アプリケーションの一意性を明示的にチェックするために、一意のフィールドがプライマリキーとして格納される補助テーブルを使用できます。
比較的簡単な代替方法は、セカンダリインデックスを使用することです。したがって、補助テーブルを混乱させることはありません。
get_all
メソッド(http://rethinkdb.com/api/#js:selecting_data-get_all)でアプリケーションのチェックを行うことはできません。
問題は、これをアトミックに行うことができないことです。私。セカンダリインデックスをチェックしてキーが存在しないことと実際にドキュメントを挿入する時間との間に、他の人が同じキーを持つドキュメントを挿入する可能性があります。 –
このリンクは壊れています。もしそれが原子ではないのであれば気にしないですが、サンプルコードを提供できますか? – chovy
ありがとうございます!基本的に、私は1つのフィールドをユニークにすることを好みます。私がPrimaryKeyでそれを解決できるなら、私にとっては大丈夫です! – daslicht
これはまだ最適なソリューションですか?これは3年前に投稿されました。 – chovy
@ chovyおそらく、私は、MongoDBのような一種の邪魔になることを避けるためにユニークなセカンダリキーを拒否することにしたと思いますが、ユニークなセカンダリキーを許可しますが、シャード間の一意性を保証しません。 – Andy