Javascript MongoDB聚合不';t返回具有相同值的对象
我使用聚合功能返回具有特定条件的数组。所以聚合将遍历集合中的所有文档,然后遍历文档中的所有pets数组,最后遍历嵌套在pets数组中的所有处理数组Javascript MongoDB聚合不';t返回具有相同值的对象,javascript,arrays,mongodb,express,Javascript,Arrays,Mongodb,Express,我使用聚合功能返回具有特定条件的数组。所以聚合将遍历集合中的所有文档,然后遍历文档中的所有pets数组,最后遍历嵌套在pets数组中的所有处理数组 db.collection.aggregate({$unwind:"$pets"},{$group:{"_id":"$pets.treatments"}}, {$unwind:"$_id"},{$group:{"_id":"$_id"}},{$match: {"_id.name":"name"}} 结果我得到了这样的东西: [{
db.collection.aggregate({$unwind:"$pets"},{$group:{"_id":"$pets.treatments"}},
{$unwind:"$_id"},{$group:{"_id":"$_id"}},{$match:
{"_id.name":"name"}}
结果我得到了这样的东西:
[{"_id":
{"name":"vet","treatment":"misoshiur","paid":"NO","opinion":"Good"}},
{"_id":{"name":"vet","treatment":"czekolada","paid":"NO","opinion":""}},
{"_id":
{"name":"vet","treatment":"misoshiur","paid":"NO","opinion":"Excellent"}},etc...]
我的问题是,我可能会有完全相同的两个或更多的对象
{"_id":
{"name":"vet","treatment":"misoshiur","paid":"NO","opinion":"Excellent"}}
{"_id":
{"name":"vet","treatment":"misoshiur","paid":"NO","opinion":"Excellent"}}
当我在mongodb中执行命令时,我有两个完全相同的对象,它不返回它们,只返回一个,为什么?如何使其返回所有对象?甚至这些完全相同的物体
事实上,我对mognodb不是很有经验,即使查询不是很完美,它也能满足我的要求;)但有人能解释一下为什么mongodb在使用$match之后拒绝它已经在数组中的对象吗?我认为我的项目很重要,因为我在计算意见,可能意见会被别人复制
JSON
我的目标是创建一个数组,该数组将包含所有文档中的所有对象。所以每个文档都有一个pets数组,pets数组中的每个对象都有一个数组。我想在所有文档中使用所有这些处理数组,并使用$match指定名称。因此,我有一个数组,其中包含所有文档中所有治疗数组中的对象,该名称键等于某个用户。因为我不确定“使用$match指定名称”是什么意思,因为pets数组也有“名称”,治疗数组也有“名称”。我假设您希望在“pets.name”上匹配$match,并获得阵列中的所有治疗。 因为,宠物是一个数组,首先将它们展开,然后进行治疗,因为它也是一个数组,然后与“pets.name”匹配,然后按“pets.name”分组,并推送到治疗数组
aggregate([
{
$unwind: "$pets"
},
{
$match: {
"pets.name": "io"
}
},
{
$unwind: "$pets.treatments"
},
{
$group: {
_id: "$pets.name",
treatments: {
$push: "$pets.treatments"
}
}
}
])
输出将是这样的
{
"_id": "io",
"treatments": [
{
"name": "vet",
"treatment": "misoshiur",
"paid": "NO",
"opinion": "Excellent"
}
]
}
如果要在pets.treatment.name上使用$match,请将$match替换为“$pets.treatments.name”,并将$group中的_id替换为“$pets.treatments.name”
在解开pets.treatment和$group之前写入$match将优化查询。
因为我不确定“使用$match指定名称”是什么意思,因为pets数组也有“name”,而treatments数组也有“name”。我假设您希望在“pets.name”上匹配$match,并获得阵列中的所有治疗。
因为,宠物是一个数组,首先将它们展开,然后进行治疗,因为它也是一个数组,然后与“pets.name”匹配,然后按“pets.name”分组,并推送到治疗数组
aggregate([
{
$unwind: "$pets"
},
{
$match: {
"pets.name": "io"
}
},
{
$unwind: "$pets.treatments"
},
{
$group: {
_id: "$pets.name",
treatments: {
$push: "$pets.treatments"
}
}
}
])
输出将是这样的
{
"_id": "io",
"treatments": [
{
"name": "vet",
"treatment": "misoshiur",
"paid": "NO",
"opinion": "Excellent"
}
]
}
如果要在pets.treatment.name上使用$match,请将$match替换为“$pets.treatments.name”,并将$group中的_id替换为“$pets.treatments.name”
在解开pets.treatment和$group之前写入$match将优化查询。
因为我不确定“使用$match指定名称”是什么意思,因为pets数组也有“name”,而treatments数组也有“name”。我假设您希望在“pets.name”上匹配$match,并获得阵列中的所有治疗。
因为,宠物是一个数组,首先将它们展开,然后进行治疗,因为它也是一个数组,然后与“pets.name”匹配,然后按“pets.name”分组,并推送到治疗数组
aggregate([
{
$unwind: "$pets"
},
{
$match: {
"pets.name": "io"
}
},
{
$unwind: "$pets.treatments"
},
{
$group: {
_id: "$pets.name",
treatments: {
$push: "$pets.treatments"
}
}
}
])
输出将是这样的
{
"_id": "io",
"treatments": [
{
"name": "vet",
"treatment": "misoshiur",
"paid": "NO",
"opinion": "Excellent"
}
]
}
如果要在pets.treatment.name上使用$match,请将$match替换为“$pets.treatments.name”,并将$group中的_id替换为“$pets.treatments.name”
在解开pets.treatment和$group之前写入$match将优化查询。
因为我不确定“使用$match指定名称”是什么意思,因为pets数组也有“name”,而treatments数组也有“name”。我假设您希望在“pets.name”上匹配$match,并获得阵列中的所有治疗。
因为,宠物是一个数组,首先将它们展开,然后进行治疗,因为它也是一个数组,然后与“pets.name”匹配,然后按“pets.name”分组,并推送到治疗数组
aggregate([
{
$unwind: "$pets"
},
{
$match: {
"pets.name": "io"
}
},
{
$unwind: "$pets.treatments"
},
{
$group: {
_id: "$pets.name",
treatments: {
$push: "$pets.treatments"
}
}
}
])
输出将是这样的
{
"_id": "io",
"treatments": [
{
"name": "vet",
"treatment": "misoshiur",
"paid": "NO",
"opinion": "Excellent"
}
]
}
如果要在pets.treatment.name上使用$match,请将$match替换为“$pets.treatments.name”,并将$group中的_id替换为“$pets.treatments.name”
在解除pets.treatment和$group之前写入$match将优化查询。
完全不清楚您想做什么<代码>{“$uwnid”:“$\u id”},{“{”$group:{“\u id”:“$\u id”}在这里什么都不做。我对mognodb没有太多经验,但我这样做是为了得到一个包含对象的数组作为结果。如果您不介意的话,如果您能纠正我,我将非常高兴。我更新了问题。您可以展示一些文档以及您希望从中获得的结果吗?现在我们有了一个文档,但结果是什么你想从这些数据中得到什么?从多个文档中得到什么?完全不清楚你想做什么。{“$uwnind”:“$\u id”},{“{“$group”:{“\u id”:“$\u id”}
在这里什么都不做。我对mognodb没有太多经验,但我这样做是为了得到一个包含对象的数组作为结果。如果您不介意的话,如果您能纠正我,我将非常高兴。我更新了问题。您可以展示一些文档以及您希望从中获得的结果吗?现在我们有了一个文档,但结果是什么你想从这些数据中得到什么?从多个文档中得到什么?完全不清楚你想做什么。{“$uwnind”:“$\u id”},{“{“$group”:{“\u id”:“$\u id”}
在这里什么都不做。我对mognodb没有太多经验,但我这样做是为了得到一个包含对象的数组作为结果。如果您不介意的话,如果您能纠正我,我将非常高兴。我更新了问题。您可以展示一些文档以及您希望从中获得的结果吗?现在我们有了一个文档,但结果是什么你想从这些数据中得到什么?从多个文档中得到什么呢?完全不清楚你想做什么。{“$uwnind”:“$\id”},{“{“$group”:{“\u id”:“$\u id”}
就是这样做的