我正在考虑在某些时候为我的一些项目切换到 MongoDB。为此,我需要对其进行测试并知道我能做什么和不能做什么。
select
在阅读了一些关于 MongoDB 如何工作的书籍之后,我必须说我对's 的实际工作方式有点困惑。
假设我有一个名为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
集合选择一个主题及其所有消息?Person1
我的意思是,由没有messages_can_be_seen_by_others
标记为的人写的消息不true
应该被数据库返回。
那么,我应该使用 map/reduce,在php
获得所有结果后进行过滤,还是还有其他我不知道的事情?如果我应该使用 map/reduce 会有多困难?
另外,还有一个问题。如何从第一条消息topics
中选择所有字段?date
(有点像$elemMatch.messages.0.date
)
PS:额外的问题:我可以返回一个主题的消息数吗?(实际上没有使用 PHP 计算它们。只需计划 MongoDB 选择语句)
问候