2011-08-11 6 views
6

私はいくつかのコレクションを持つデータベースを構築しています。私は主なコレクションのすべてのドキュメントに使用する予定のユニークな文字列を持っています。他のコレクションのドキュメントはメインコレクションのドキュメントを参照します。つまり、上記のIDを他のコレクションに保存する必要があります。しかし、_idがコレクション全体で一意である必要があり、データベース全体では一意である必要がない場合、他のコレクションの_idも前述の一意の文字列を使用するようにします。MongoDBでは、文書_idをコレクション全体またはDB全体でユニークにする必要がありますか?

また、独自の_idを設定するには、挿入するドキュメントの一部として"_id":"unique_string"プロパティを持つことが必要です。私は "unique_string"を別のフォーマットに変換する必要はありませんか?

また、仮に言えば、変数「_id」を保存して代わりに使用することができますか?たとえば、var id = "_id"とその後のコード(挿入時やクエリ時など)にはid:"unique_string"が含まれています。

ベスト、と感謝は、
サミ

答えて

9

_id sがコレクション内で一意である必要があります。同じ_idの2つのドキュメントを2つの異なるコレクションに挿入することで、これを迅速に検証できます。

あなたの他の仮定は正しいです、ちょうどそれらを試して、彼らが働くかどうかを見てください。プディングの証拠は食べ物にある。

注:_idを直接使用すると、var id = "_id"はコードをコンパイルするだけです。

+0

ありがとうございました!私はあなたが正しいと思います - 私は簡単にこれを自分で試してみることができました。また、id = "_id"という質問は、 "_id"自体ではなく、指定されたドキュメント内の他の潜在的なキーのために多くの意味がありました。もしそれが1のために働くならば、それは他人のために働くでしょう。あなたの応答のためにありがとう!それは有り難いです! – thisissami

+0

ちょっとyi_H、私はちょうどあなたの答えの後半部分が間違っていることをお知らせしたいと思います。キーを表現するために変数を使用することはできません。それらの行に沿って変数を使って何かをしたい場合は、事前に文書を保存してその文書をクエリーに渡す必要があります。 – thisissami

+0

@thisissami:私はあなたを理解していません...私はそれがうまくいかない理由のいくつかを考えることができます:例えば、JavaScriptのオブジェクトリテラルでキー部分は文字列として解析されます。それを引用する)。あなたは 'id =" _ id "でそれを行うことができます。 doc = {...}; doc [id] = value; ' –

関連する問題