我一直在尝试对以下这些(简化的)文档进行查询。我的数据库由与这些相似的几个数据组成。
由于在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
}
]
}
]
我该如何做(如果可能)?
答案 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