3

在我的代码中,人们可以关注其他人。到目前为止,除了这个事实之外一切都很好:在 userScheme 我有这个字段。

, following: [{ type: Schema.ObjectId, ref: 'Users' }]

由于每个用户都有一个用户名,因此我将 dbref 与用户名一起使用更加通用。有没有办法做这样的事情?

, following: [{ type: Users.username, ref: 'Users' }]

非常感谢,g

4

2 回答 2

3

不,只有ObjectId引用_id另一个集合的属性的值才能用作引用。

源代码中确认。

于 2012-07-01T13:13:44.323 回答
3

您只能通过 ObjectId 引用像您的第一个代码片段这样的集合。

[{ type: Schema.ObjectId, ref: 'Users' }]

使用populate()进行查询时,您可以指定要返回的字段。在你的情况下,它看起来像

User.find({}).populate('following', 'username').exec(function(err,doc) {});

以下数组中的每个对象看起来像

{ _id: 'xxxxxxxxxx', username: 'xxxxxxxx' }
于 2013-01-13T05:56:53.433 回答