在我的mongodb数据库中,我只有两个集合:客户端和类型客户端。
客户端上的每个文档都有一个idTypeClient。(我不想使用嵌入式文档,因为我想单独管理TypeClient)。
客户端集合:
db.clients.find()
[
{
_id: ObjectId("644d07b750c766f2e55a99d4"),
name: 'Apple',
website: 'http://www.apple.com',
idTypeClient: '644d01b7ad65ba68ad69da4c'
}
]
类型Client集合:
db.type_clients.find()
[
{
_id: ObjectId("644d01b7ad65ba68ad69da4c"),
label: 'Type B',
__v: 0
}
]
我听说我需要这样做:
db.clients.aggregate([
{
"$project": {
"idTypeClient": {
"$toObjectId": "$idTypeClient"
}
}
},
{$lookup:{from:'type_clients',localField:'idTypeClient',foreignField:"_id",as:'typeClient'}}
]);
但我得到了
[
{
_id: ObjectId("644d07b750c766f2e55a99d4"),
idTypeClient: ObjectId("644d01b7ad65ba68ad69da4c"),
typeClient: [
{
_id: ObjectId("644d01b7ad65ba68ad69da4c"),
label: 'Type B',
__v: 0
}
]
}
]
我还想从Clients集合(clients.name和www.example.com)中获取所有字段clients.website
谢谢
1条答案
按热度按时间bxfogqkk1#
下面是Charchit Kapoor在评论中提出的一个例子:
example
P.S.保持idTypeClient字段为对象并在该字段上创建索引有望在查询中增加一些性能改进...