根据 mongodb 中的 _id 从另一个集合中查找/聚合

发布于 2025-01-12 19:18:58 字数 300 浏览 0 评论 0原文

PetTable {
  _id: ObjectId,
  bdTable: string,
  status: ObjectId(ref=Status)
}

Status {
    _id : ObjectId,
    statusCode : number, --> exple: (1, 2, ...7)
    petId : ObjectId(ref=PetTable),
}

我想找到 bdTable = "zzzz" 且 status =5 的 PetTable 的所有对象;

我不知道该怎么办?

PetTable {
  _id: ObjectId,
  bdTable: string,
  status: ObjectId(ref=Status)
}

Status {
    _id : ObjectId,
    statusCode : number, --> exple: (1, 2, ...7)
    petId : ObjectId(ref=PetTable),
}

i want to find all objects of PetTable with bdTable = "zzzz" and status =5;

I have no idea how to go about it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

内心旳酸楚 2025-01-19 19:18:58

使用 $lookup 管道阶段如下:

db.PetTable.aggregate([
  { $match: { bdTable: 'zzzz' } },
  { $lookup: {
    from: 'Status',
    let: { status_id: '$status' },
    pipeline: [
      { $match: {
        $expr: { 
          $and: [
            { $eq: [ 5, '$statusCode' ] },
            { $eq: [ '$_id', '$status_id' ] }
          ] 
        }
      } }
    ],
    as: 'status'
  } },
  { $match: { 
    $expr: { $gt: [ { $size: '$status' }, 0] }
  } },
]);

Mongo Playground

Run an aggregate operation with $lookup pipeline stage as follows:

db.PetTable.aggregate([
  { $match: { bdTable: 'zzzz' } },
  { $lookup: {
    from: 'Status',
    let: { status_id: '$status' },
    pipeline: [
      { $match: {
        $expr: { 
          $and: [
            { $eq: [ 5, '$statusCode' ] },
            { $eq: [ '$_id', '$status_id' ] }
          ] 
        }
      } }
    ],
    as: 'status'
  } },
  { $match: { 
    $expr: { $gt: [ { $size: '$status' }, 0] }
  } },
]);

Mongo Playground

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文