提取嵌入文档我有一个集合中包含的文件如下:MongoDB的 - 与查询
{
name: "Johann",
surname: "Esburg",
jobs: [
{
"profession": "chef",
"salary": 1000
}, {
"profession": "gardener",
"salary": 800
}
]
},
{
name: "Sam",
surname: "Sonite",
jobs: [
{
"profession": "doctor",
"salary": 2000
}, {
"profession": "barber",
"salary": 850
}
]
}
我想找到所有已薪水大于900,这样的结果将是工作:
[
{
"profession": "chef",
"salary": 1000
}, {
"profession": "doctor",
"salary": 2000
}
]
我很确定我必须诉诸于mongodb aggregation
。我设法做到的最好的是:
db.persons.aggregate([
{$unwind: "$jobs"},
{$match: {"jobs.salary": {$gt: 900}}},
{$project: {jobs: 1, _id: 0}}])
返回:
[
{
"jobs": {
"profession": "chef",
"salary": 1000
}
},
{
"jobs": {
"profession": "doctor",
"salary": 2000
}
}
]
但这不是我想要的。我还希望jobs
密钥被删除。 我知道有一个可能性是指定在projection
这样嵌入文档的每个变量:
db.persons.aggregate([
{$unwind: "$jobs"},
{$match: {"jobs.salary": {$gt: 900}}},
{$project:
{"profession": "$jobs.profession",
"salary": "$jobs.salary", _id: 0}}])
但我宁愿避免它,因为嵌入文档可以在某些领域有所不同。
组由'_id:像这样的'null' { “$开卷”: “$工作”},{“$匹配“:{”jobs.salary“:{$ gt:900}},{”$ group“:{”_ id“:null,”results“:{”$ push“:”$ jobs“}}}' – Yogesh
@Yogesh这是我想要的一个很好的近似值。谢谢 – tano