1

私は2つのコレクションを持っています。

checkone
{"_id":1,"name":"alex"},
{"_id":2,"name":"sandy"}

checktwo
{"_id":11,"password":"alex",tenant_id:{$ref:"checkone","$id":1}}
{"_id":12,"password":"suman",tenant_id:{$ref:"checkone","$id":2}}

checkoneidの値を参照するChecktwotenant_id。

しかし、checktwoに別のドキュメントを挿入しようとすると

 {"_id":13,"password":"shan",tenant_id:{$ref:"checkone","$id":6}}

その挿入されます。checkoneid値にtenant_id値6が存在するかどうかをチェックして追加することはありません。この状態では、id値6はcheckoneには存在しませんが、checktwotenant_id値に挿入されます。

実はチェックして挿入しなきゃいけないの?

ここで$refはどういう意味ですか?

この機能がmongodbで利用できないかどうか?間違っている場合は誰かが私を導くことができますか?

4

1 に答える 1

1

MongoDBには何らかの関係能力があると考えていたので、あなたは古典的な間違いを犯したと思います。

DBRefは関係がなく、サーバー側ではサポートされていません。統合外部キーまたは他のテーブルに接続するための制約としては扱われません。

のような関数を使用して他の行を怠惰に取得するための正規化された方法で自己記述型IDを持つことは、単にドライバー側の能力getConnected()です。

JOINと制約の機能はMongoDBには存在しません。クライアントコードで手動で存在を確認する必要があります6

この動作はDBRefクラス内に存在する必要があり、以前に設定されていない値に設定された場合は、他の行の存在をチェックする必要があると主張できると思います。ただし、現時点ではそうではありません。

于 2012-09-05T14:25:25.187 に答える