在MongoDB中找不到正确的查询

时间:2018-07-13 11:36:09

标签: node.js mongodb mongoose mongodb-query

我一直在尝试对以下这些(简化的)文档进行查询。我的数据库由与这些相似的几个数据组成。

由于在Mongo Shell中没有嵌套查询,是否有另一种可能的方式来获取我想要的内容?

我正在尝试获取DB中超过30%的药房拥有的药品清单(无论数量如何)。

[
  {
    "Pharmacy": "a",
    "Medicine": [
      {
        "MedName": "MedA",
        "Quantity": 55
      },
      {
        "MedName": "MedB",
        "Quantity": 34
      },
      {
        "MedName": "MedD",
        "Quantity": 25
      }
    ]
  },
  {
    "Pharmacy": "b",
    "Medicine": [
      {
        "MedName": "MedB",
        "Quantity": 60
      },
      {
        "MedName": "MedC",
        "Quantity" : 34
      }

    ]
  }
]

我该如何做(如果可能)?

2 个答案:

答案 0 :(得分:1)

请在此处检查答案:https://mongoplayground.net/p/KVZ4Ee9Qhu-

  - name: Upgrade
    expect:
      command: /tmp/bin/update_script.sh 
      environment:
        JAVA_HOME: /opt/java/
      responses:
        Question:
          - Do you want to use the standard cipher suites [N]: n

您应该得到如下结果:

var PharmaCount = db.collection.count();


db.collection.aggregate([
  {
    "$unwind": "$Medicine"
  },
  {
    "$project": {
      "medName": "$Medicine.MedName",
      "Pharmacy": "$Pharmacy"
    }
  },
  {
    "$group": {
      "_id": {
        "medName": "$medName"
      },
      "count": {
        "$sum": 1
      }
    }
  },
  {
    "$project": {
      "count": 1,
      "percentage": {
        "$concat": [
          {
            "$substr": [
              {
                "$multiply": [
                  {
                    "$divide": [
                      "$count",
                      {
                        "$literal": 2 // Your total number of pharmacies i.e PharmaCount
                      }
                    ]
                  },
                  100
                ]
              },
              0,
              3
            ]
          },
          "",
          "%"
        ]
      }
    }
  }
])

希望这会有所帮助。

答案 1 :(得分:0)

您无法在单个查询中执行此操作,但这是一种方法:

post