**用java操作,
条件:keyID=111111111111且point=A的所有record
这里的point是在remark里面的,而且只显示point=A和相应的city,其它的B,C都不要**
{
"tempList": [
{
"_id": ObjectId("5a6afcfce9ec67213fca393d8"),
"keyID": "111111111111",
"price": 123,
"remark": [
{
"city": "beijing",
"point": "A"
},
{
"city": "shanghai",
"point": "A"
},
{
"city": "guangzhou",
"point": "C"
}
]
},
{
"_id": ObjectId("5a6afcfce2121fca393d8"),
"keyID": "111111111111",
"price": 456,
"remark": [
{
"city": "beijing",
"point": "A"
},
{
"city": "shanghai",
"point": "B"
},
{
"city": "guangzhou",
"point": "C"
}
]
},
{
"_id": ObjectId("5a6afcfce9e32577223d8"),
"keyID": "222222222222",
"price": 789,
"remark": [
{
"city": "beijing",
"point": "A"
},
{
"city": "shanghai",
"point": "B"
},
{
"city": "guangzhou",
"point": "C"
}
]
}
]
}
----------------------------查询结果应该如下---------------------------
{
"tempList": [
{
"_id": ObjectId("5a6afcfce9ec67213fca393d8"),
"keyID": "111111111111",
"price": 123,
"remark": [
{
"city": "beijing",
"point": "A"
},
{
"city": "shanghai",
"point": "A"
}
]
},
{
"_id": ObjectId("5a6afcfce2121fca393d8"),
"keyID": "111111111111",
"price": 456,
"remark": [
{
"city": "beijing",
"point": "A"
}
]
}
]
}
$map,$reduce,$filter (segmentfault无法正确转义美元符号,凑合看吧……)这些运算符在很多场景下可以帮助我们避免$unwind,语法请参考下文档。对于你的要求,可以用
$filter
直接解决问题:文档格式:
aggregation写法: