【发布时间】:2013-12-20 23:25:49
【问题描述】:
我创建了一个聚合查询,它使用“parts”键作为“_id”并返回数组中关联的所有“subparts”数字。聚合查询的输出是不可取的,因为我得到了包含 74755 个字典对象的数组“结果”。每个对象都包含一个用于 _id 的 int 32 和一个用于“#associated_subparts”的数组。我可以通过以下方式访问子元素:
db.agg_result.find({}, {_id: 0, result: { $slice: [0,2]}})
但这只是一种定位方法。我尝试了嵌套的 $elemMatch 和 $all 查询的变体,但没有成功。例如,我希望能够返回 id 为 468183339 的对象。我可能错误地投影了我的原始聚合查询,但我想返回一个没有嵌套的集合,因此集合中的每个对象都是这些部分 > 子部分对象之一。
示例查询:
var agg_out = db.collection.aggregate( { $group :{ '_id' : "$parts#",
'associated_subparts#' : { $addToSet : "$sub_part" }}});
db.agg_result.insert(agg_out);
db.agg_result.find();
示例输出:
{
"_id" : ObjectId("52b4c4c6e984c01d69ff176f"),
"result" : [
{
"_id" : 468183339,
"associated_subparts#" : [
-1408237536
]
},
{
"_id" : 782155933,
"associated_subparts#" : [
-1408237536
]
},
{
"_id" : 1583659973,
"associated_subparts#" : [
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535,
-1408237535
]
}
]
}
【问题讨论】:
标签: mongodb