我正在查看MongoDB关于
相关帖子:
我希望它只返回子文档中
但是,如果我执行那个查询,我会得到以下结果:
我也尝试了以下方法,结果相同:
有没有一种方法只返回
$
和$elemMatch
投影的文档。我试图弄清楚如何仅返回投影数组的一部分字段,但似乎无法弄清楚。相关帖子:
我也不想展开仅在mongo投影中返回数组值的子文档,因为我仍然需要来自顶级文档的一些字段。
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})
我希望它只返回子文档中
key
是1
的数组下的name
。例如,{
"_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.$
的子集而不是整个子文档?
db.students.update( { _id: 4, "grades.grade": 85 }, { $set: { "grades.$.std" : 6 } } )
。 - Bilk