1

StudentコレクションとPersonコレクションがあります。Personには、名前、住所などのフィールドが含まれます。Studentには、rollno、およびこの学生のperson._idを格納するpersonフィールドが含まれます。

ここで、学生テンプレートに学生の名前を表示したいのですがname、Studentにはフィールドがないことに注意してください。これは、その学生のPersonドキュメントから取得する必要があります。

学生情報とその学生の個人文書からの選択フィールドを持つクライアントでmongodbカーソルを取得する方法はありますか?

また、私が達成しようとしていることを達成するためのより良いまたはより標準的な方法はありますか?

name注:冗長性を使用してフィールドをStudentドキュメントに保存したくないので、それは解決策ではありません

4

3 に答える 3

2

私が達成しようとしていることを達成するためのより良いまたはより標準的な方法はありますか?

学生に関するすべての情報を1回の読み取りで読み込もうとしているようです。そのための唯一の方法は、すべての情報を1つのドキュメントにまとめることです。

ドキュメントデータベースの柔軟なスキーマを使用すると、同じスキーマ、つまりフィールドの数を持つ必要のない単一のコレクションにドキュメントを含めることができます。

したがって、実際に人と学生に別々のコレクションが必要な理由を検討することをお勧めします-これにより、学生を追加すると2つのコレクションへの書き込みが発生します(1回の書き込みはアトミックですが、2回の書き込みはアトミックではありません)。学生に関するすべての情報を取得するために、2つの別々の読み取りが必要な場所があります。

このSOの質問は、あなたの状況にいくらか関連しています。

于 2012-06-09T21:43:54.523 に答える
0

このスレッドで受け入れられた答えを参照してください:

コレクションから削除するときに、カーソルを監視するときに発生する可能性のあるバグ

_publishCursorこれには、組み込みのタイトルの変更バージョンを使用することが含まれpublishModifiedCursorます。これにより、コールバックを指定して、公開するカーソル内の各ドキュメントにプロパティを追加できます。

于 2012-08-06T03:15:29.727 に答える
0

Personオブジェクトにrole/job属性を持つようにコードを変更します。それは、少なくとも私にとっては意味論的であり、誰かが元の方法で仕事を変えることと、単に役割を変えることの難しさのレベルについて考えてください。

その後、あなたはただ検索することができます

Persons.find {role: 'student'}

そして、それは学生オブジェクトを持つことと完全に類似しています。

Asyaが言ったように、学生は他のフィールドが持っている追加のフィールドを持つことができます。

于 2012-07-05T02:12:44.810 に答える