假设数据库中有这样的文档:
{
name: 'my list',
items: [
{ type: 'book', id: 5364 },
{ type: 'car', id: 354 },
{ type: 'laptop', id: 228 }
]
}
我需要根据type
值,从每个项目自己的集合中获取其数据。
我找了一下,但找不到正确的方法。
预期输出:
{
name: 'my list',
items: [
{ type: 'book', id: 5364, data: [{...}] },
{ type: 'car', id: 354, data: [{...}] },
{ type: 'laptop', id: 228, data: [{...}] }
]
}
第一个集合的Mongoose模式(如上):
{
name: String,
items: {
type: Array,
default: []
}
}
而必须查找的其他集合具有相应的_id
字段。
1条答案
按热度按时间06odsfpq1#
有几种不同的方法可以做到这一点。为了与您目前拥有的最相似,您只需要做一个小的修改。
type
是Mongoose中的一个关键字,所以如果您想在您的模式中有一个实际上称为“type”的字段,您需要使用这个词两次。一次是Mongoose关键字,另一次是定义您的模式。如果
data
字段来自另一个集合,则可以使用引用,然后在find方法上调用populate()
。