【发布时间】:2014-06-08 21:07:39
【问题描述】:
我正在查看 MongoDB 在 $ 和 $elemMatch 上的文档
预测。我试图弄清楚如何只返回一个子集
投影数组的字段,但我似乎无法弄清楚。
相关帖子:
我不想从mongodb aggregation framework - Fetch first document's field of the nested array 执行$slice。
我也没有尝试从 Return only array value in mongo projection 拼合子文档,因为我仍然想要顶部文档中的一些字段。
假设我在test 集合中有以下文档:
{
"_id": "A",
"array": [
{"key": 1, "name": "foo", "data": {}},
{"key": 2, "name": "bar", "data": {}}
],
"extra": {}
},
{
"_id": "B",
"array": [
{"key": 3, "name": "spam", "data": {}},
{"key": 4, "name": "eggs", "data": {}}
],
"extra": {}
}
我实际上想要执行的查询是:
db.test.findOne({"array.key": 1}, {"array.$.name": 1, "extra": 1})
我希望它只在子文档下返回name
key 是 1 的数组。例如,
{
"_id": "A",
"array": [
{"name": "foo"}
],
"extra": {}
}
但是如果我执行那个查询,我会得到这个:
{
"_id": "A",
"array": [
{"key": 1, "name": "foo", "data": {}}
],
"extra": {}
}
这与执行查询相同:
db.test.findOne({"array.key": 1}, {"array.$": 1, "extra": 1})
我也尝试了以下方法,结果相同:
db.test.findOne({"array.key": 1}, {"array.$": 1, "array.name": 1, "extra": 1})
有没有办法只返回array.$ 的字段子集
而不是整个子文档?
【问题讨论】:
标签: mongodb mongodb-query