Node.js 在MongoDB中找不到正确的查询
我一直在试图为下面这些简化的文档提出一个查询。我的数据库由几个类似的数据组成 既然MongoShell中没有嵌套查询,有没有其他可能的方法来获取我想要的 我正试图获得一份药品清单,该清单由我所在DB中30%以上的药房所有,无论数量如何Node.js 在MongoDB中找不到正确的查询,node.js,mongodb,mongoose,mongodb-query,Node.js,Mongodb,Mongoose,Mongodb Query,我一直在试图为下面这些简化的文档提出一个查询。我的数据库由几个类似的数据组成 既然MongoShell中没有嵌套查询,有没有其他可能的方法来获取我想要的 我正试图获得一份药品清单,该清单由我所在DB中30%以上的药房所有,无论数量如何 [ { "Pharmacy": "a", "Medicine": [ { "MedName": "MedA", "Quantity": 55 }, { "Med
[
{
"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
}
]
}
]
如果可能的话,我怎么做 您不能在单个查询中执行此操作,但有一种方法:
size = (db['01'].distinct("Pharmacy")).length;
minPN = Math.ceil(size*0.3);
db['01'].aggregate(
// Pipeline
[
// Stage 1
{
$unwind: {
path : "$Medicine",
}
},
// Stage 2
{
$group: {
_id:"$Medicine.MedName",
pharmacies:{$addToSet:"$Pharmacy"}
}
},
// Stage 3
{
$project: {
pharmacies:1,
pharmacies_count:{$size:"$pharmacies"}
}
},
{
$match:{pharmacies_count:{$gte:minPN}}
}
]
);
请在此处检查答案: 您应该得到如下结果:
[
{
"_id": {
"medName": "MedC"
},
"count": 1,
"percentage": "50%"
},
{
"_id": {
"medName": "MedD"
},
"count": 1,
"percentage": "50%"
},
{
"_id": {
"medName": "MedB"
},
"count": 2,
"percentage": "100%"
},
{
"_id": {
"medName": "MedA"
},
"count": 1,
"percentage": "50%"
}
]
希望这能有所帮助。您好,您能提供完整的文档架构而不仅仅是数组吗?在这种情况下,其他字段为什么会很重要?某些查询可能与嵌套数组和文档不同。您的意思是,整个数组是更大文档的一部分吗?如果是这样,则不是这样,文档是每个药房记录,带有一个更简单的字段。我刚刚添加了两个示例recordsok,如果我需要展开您的阵列,但没有阵列名称,我该怎么办?只需提供信息,或者不要寻求任何帮助!是的,这确实很有帮助。但是,如果我需要将输出限制在某个百分比以上,我应该怎么做呢?不管怎样,我已经将此添加到$match:{count:{$gte:MathCielPharmaCount*0.15}中,这正是我想要的。
[
{
"_id": {
"medName": "MedC"
},
"count": 1,
"percentage": "50%"
},
{
"_id": {
"medName": "MedD"
},
"count": 1,
"percentage": "50%"
},
{
"_id": {
"medName": "MedB"
},
"count": 2,
"percentage": "100%"
},
{
"_id": {
"medName": "MedA"
},
"count": 1,
"percentage": "50%"
}
]