mongodb 使用协议时检索所有字段

uinbv5nw  于 2023-05-06  发布在  Go
关注(0)|答案(1)|浏览(166)

在我的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
谢谢

bxfogqkk

bxfogqkk1#

下面是Charchit Kapoor在评论中提出的一个例子:
example
P.S.保持idTypeClient字段为对象并在该字段上创建索引有望在查询中增加一些性能改进...

相关问题