1

我有一个学生收藏和一个人收藏。Person 包含以下字段:姓名、地址等 Student 包含:rollno 和一个存储此学生的 person._id 的 person 字段

现在我想在学生模板中显示学生的姓名,但请注意学生中没有name字段,我需要从该学生的个人文档中获取该字段。

有没有办法在具有学生信息以及该学生个人文档中的选择性字段的客户端上获取 mongodb 光标?

此外,是否有更好或更标准的方式来实现我想要实现的目标?

注意:我不想使用冗余并将name字段存储在学生文档中,所以这不是解决方案

4

3 回答 3

2

有没有更好或更标准的方式来实现我想要实现的目标?

听起来您正试图在一次阅读中阅读有关学生的所有信息 - 唯一的方法是将所有这些信息放在一个文档中。

文档数据库的灵活模式允许您在单个集合中拥有文档,这些文档不需要具有相同的模式,即字段数量。

所以我建议你考虑一下为什么你实际上需要为人和学生单独的集合 - 这会导致当你添加一个学生时写入两个集合(虽然一次写入是原子的,但两次写入不是)并且它也会导致你的问题现在有你需要有两个单独的阅读来获取有关学生的所有信息。

这个SO question与您的情况有些相关。

于 2012-06-09T21:43:54.523 回答
0

请参阅此线程中接受的答案:

从集合中删除时观察游标时可能出现的错误

它涉及使用内置_publishCursor标题的修改版本publishModifiedCursor,它允许您指定回调以将属性添加到您正在发布的游标中的每个文档。

于 2012-08-06T03:15:29.727 回答
0

我会将您的代码更改为在 Person 对象中具有角色/工作属性。这是语义上的,至少对我来说是这样,想想某人以你原来的方法换工作与简单地改变角色的难度级别。

然后你可以搜索

Persons.find {role: 'student'}

这完全类似于拥有一个学生对象。

正如 Asya 所说,学生们可以拥有其他人拥有的额外领域。

于 2012-07-05T02:12:44.810 回答