【发布时间】:2021-12-25 06:50:39
【问题描述】:
假设我有这个数据:
[
{
"_id": 101,
"name": "ABC",
"students": [
{
"name": "john",
"age": 10,
"city": "CA"
},
{
"name": "danial",
"age": 15,
"city": "KA"
}
]
},
{
"_id": 102,
"name": "DEF",
"students": [
{
"name": "adam",
"age": 20,
"city": "NY"
},
{
"name": "johnson",
"age": 12,
"city": "CA"
}
]
}
]
现在我想获取姓名和所在城市为 CA 的学生。
我所做的是:
db.collection.find({
"students.city": "CA"
},
{
students: {
$elemMatch: {
"city": "CA"
}
}
})
然后它返回:
[
{
"_id": 101,
"students": [
{
"age": 10,
"city": "CA",
"name": "john"
}
]
},
{
"_id": 102,
"students": [
{
"age": 12,
"city": "CA",
"name": "johnson"
}
]
}
]
但名称不见了,即 ABC 和 DEF,如何包含?
现在如果我这样做:
db.collection.find({
students: {
$elemMatch: {
city: "CA"
}
}
})
然后它返回名称和学生数组,但它包括那些城市不是 CA 的学生。
[
{
"_id": 101,
"name": "ABC",
"students": [
{
"age": 10,
"city": "CA",
"name": "john"
},
{
"age": 15,
"city": "KA",
"name": "danial"
}
]
},
{
"_id": 102,
"name": "DEF",
"students": [
{
"age": 20,
"city": "NY",
"name": "adam"
},
{
"age": 12,
"city": "CA",
"name": "johnson"
}
]
}
]
【问题讨论】:
标签: mongodb mongodb-query