首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用mongo为MongoDB找到正确的查询

无法使用mongo为MongoDB找到正确的查询
EN

Stack Overflow用户
提问于 2018-07-16 10:34:43
回答 1查看 65关注 0票数 0

我一直试图得到一份最新的(根据其EstablishedDate)药房的清单,其中有每种药物。

将此输出作为示例的以下文档数组的结果:

输出: 医学: MedA,药学:A 医学: MedB,药学:B 医学: MedC,药学:B 医学: MedD,药学:A

代码语言:javascript
运行
复制
[
  {
    "Pharmacy": "a",
    "EstablishedDate": ISODate("2006-10-12"),
    "Medicine": [
      {
        "MedName": "MedA",
        "Quantity": 55
      },
      {
        "MedName": "MedB",
        "Quantity": 34
      },
      {
        "MedName": "MedD",
        "Quantity": 25
      }
    ]
  },
  {
    "Pharmacy": "b",
    "EstablishedDate": ISODate("2015-2-2"),
    "Medicine": [
      {
        "MedName": "MedB",
        "Quantity": 60
      },
      {
        "MedName": "MedC",
        "Quantity": 34
      }
    ]
  }
]

如何解决这一问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-16 11:00:32

1.各药房对所有药品的答复

代码语言:javascript
运行
复制
db.collection.aggregate([
  {
    $unwind: "$Medicine"
  },
  {
    $project: {
      "_id": 0,
      "Medicine": "$Medicine.MedName",
      "Pharmacy": "$Pharmacy"
    }
  }
])

输出

代码语言:javascript
运行
复制
[
  {
    "Medicine": "MedA",
    "Pharmacy": "a"
  },
  {
    "Medicine": "MedB",
    "Pharmacy": "a"
  },
  {
    "Medicine": "MedD",
    "Pharmacy": "a"
  },
  {
    "Medicine": "MedB",
    "Pharmacy": "b"
  },
  {
    "Medicine": "MedC",
    "Pharmacy": "b"
  }
]

参考游乐场并运行脚本

2.拥有最新药房的所有药物

代码语言:javascript
运行
复制
db.collection.aggregate([
  {
    $unwind: "$Medicine"
  },
  {
    $sort: {
      EstablishedDate: -1
    }
  },
  {
    $group: {
      _id: "$Medicine.MedName",
      Pharmacy: {
        $first: "$Pharmacy"
      }
    }
  },
  {
    $project: {
      _id: 0,
      "Medicine": "$_id",
      "Pharmacy": "$Pharmacy"
    }
  }
])

输出

代码语言:javascript
运行
复制
[
  {
    "Medicine": "MedA",
    "Pharmacy": "a"
  },
  {
    "Medicine": "MedC",
    "Pharmacy": "b"
  },
  {
    "Medicine": "MedD",
    "Pharmacy": "a"
  },
  {
    "Medicine": "MedB",
    "Pharmacy": "b"
  }
]

引用各自的游乐场并运行脚本

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51359833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档