MongoDB - PHP手册参考方法适用性



MongoDB新手在这里。我有第一种方法是参考,我的主要疑问是我是否为我的情况使用了适当的策略(手动参考(。

在同一个数据库中处理 2 个集合(用户、消息(,让我们以存储在用户集合中的文档为例:

array (
  '_id' => new MongoId("5231817277758e660c7202c4"),
  'uname' => 'pluto',
  'pwd' => new MongoInt32(1234567),
  'email' => 'pluto1@gmail.com',
  'phone_home' => new MongoInt64(23409238),
  'phone_work' => new MongoInt64(54389724),
  'phone_mobile' => new MongoInt64(9823422),
  'visible' => new MongoInt32(1),
)

以及存储在消息集合中的文档示例(从其他用户发送给"冥王星"上方的用户(:

array (
  '_id' => new MongoId("524358102660b2c70b8b4567"),
  'from_uid' => '5231817277758e660c7202d7',
  'to_uid' => '5231817277758e660c7202c4',
  'object' => 'mongo manual Ref',
  'content' => 'is that the correct approach?',
  'datetime' => '2013-09-25 23:39:28',
)

登录的用户("pluto"(可以看到他从其他用户那里收到的所有消息,但是,我不打算打印"from_uid"值,我想将其替换为发件人的用户名。

我的主要疑问是手动引用是否是这种情况的正确方法,因为使用这种技术(如果我没有错过理解所有内容(,打印消息列表将涉及:

  1. 打印邮件列表的"查询">
  2. 另一个"查询",用于从其他集合中检索每条消息的用户名。此外,如果用户收到了 1000 条消息,则此方法将不得不运行 1001 查询?

我的第二个疑问是是否有办法直接合并或替换两个游标的结果

鉴于您的用例,复制一点数据并将有关发送用户的一些必要字段存储为嵌入式文档(在本例中为用户名(可能是可以的。

array (
  '_id' => new MongoId("524358102660b2c70b8b4567"),
  'from_user' => array(
     'uid'   => '5231817277758e660c7202d7',
     'uname' => 'mars'
   ),
  'to_uid'   => '5231817277758e660c7202c4',
  'object'   => 'mongo manual Ref',
  'content'  => 'is that the correct approach?',
  'datetime' => '2013-09-25 23:39:28',
)

这种方法意味着当您查询发送给用户的消息(您已经知道to_uid(时,您将获得所有具有正确 id 的消息到from_user,但也已经显示其用户名。

现在,您只需要在需要有关用户的更多信息时查询 - 例如获取他们的个人资料等,而不是查询 1000+ 次......

相关内容

  • 没有找到相关文章

最新更新