【发布时间】:2014-10-27 22:11:11
【问题描述】:
如何在MongoDB MapReduce JavaScript 查询中引用对象数组中对象的每个属性?
这是我的数据:
{
"_id": ObjectId("544ae3de7a6025f0470041a7"),
"name": "Bundle 4",
"product_groups": [
{
"name": "camera group",
"products": [
{
"$ref": "products",
"$id": ObjectId("531a2fcd26718dbd3200002a"),
"$db": "thisDB"
},
{
"$ref": "products",
"$id": ObjectId("538baf7c26718d0a55000043"),
"$db": "thisDB"
},
{
"$ref": "products",
"$id": ObjectId("538baf7c26718d0a55000045"),
"$db": "thisDB"
}
]
},
{
"name": "lens group",
"products": [
{
"$ref": "products",
"$id": ObjectId("531e3ce926718d0d45000112"),
"$db": "thisDB"
},
{
"$ref": "products",
"$id": ObjectId("531e3ce926718d0d45000113"),
"$db": "thisDB"
}
]
}
]
}
这是我的 map 函数:(为简单起见,我去掉了 reduce 选项,因为 map 不能正常工作并不重要)
var map = function() { emit(this.product_groups, this.product_groups.products); };
db.instant_rebates.mapReduce(
map,
{
out: "map_reduce_example",
query: {"_id": ObjectId("544ae3de7a6025f0470041a7")}
}
);
但问题是结果中的“值”字段始终显示为“未定义”。为什么?为什么 this.product_groups.products 不返回 products 数组?我该如何解决?
另外,我希望它为两个 product_group 中的每一个发出两次。但到目前为止它只发出一次。我该如何解决?
【问题讨论】:
标签: javascript mongodb mapreduce mongodb-query