いくつかのプロジェクトで、ある時点でMongoDBに切り替えることを検討しています。そのためには、それをテストして、何ができるのか、何ができないのかを知る必要があります。
MongoDBがどのように機能するかについていくつかの本を読んだ後、私は実際にどのように機能するかについて少し混乱していると言わなければなりませんselect
。
私がというコレクションを持っているとしましょうusers
:
{
user_name: string,
....,
....,
messages_can_be_seen_by_others: boolean
}
また、私はのコレクションを持っていますtopics
:
{
topic_title: string,
.....,
.....,
topic_messages:
[
{
user_name: string,
text: string,
date: DateTime
},
{
user_name: string,
text: string,
date: DateTime
}
]
.....
}
users
コレクションに応じて、1つのトピックとそのすべてのメッセージを選択するにはどうすればよいですか?つまり、としてマークされPerson1
ていない人によって書かれたメッセージは、データベースによって返されるべきではありません。messages_can_be_seen_by_others
true
それで、map / reduceを使用するphp
か、すべての結果が得られたらフィルターをかける必要がありますか、それとも私が気付いていない他のことはありますか?map / reduceを使用する必要がある場合、それはどれほど難しいでしょうか?
また、別の質問があります。topics
最初のdate
メッセージからすべてのフィールドを選択するにはどうすればよいですか?(のようなもの$elemMatch.messages.0.date
)
PS:追加の質問:トピックに含まれるメッセージの数を返すことはできますか?(PHPを使用して実際にカウントすることはありません。MongoDBselectステートメントを計画するだけです)
よろしく