[英]MongoDB get only selected elements from objects inside an array
我所擁有的是 MongoDB 中具有類似結構的文檔集合
[
{
"userid": "user1",
"addresses": [
{
"type": "abc",
"street": "xyz"
},
{
"type": "def",
"street": "www"
},
{
"type": "hhh",
"street": "mmm"
},
]
},
{
"userid": "user2",
"addresses": [
{
"type": "abc",
"street": "ccc"
},
{
"type": "def",
"street": "zzz"
},
{
"type": "hhh",
"street": "yyy"
},
]
}
]
如果我可以給出“type”和“userid”,我怎樣才能得到結果
[
{
"userid": "user2",
"type": "abc",
"street": "ccc",
}
]
即使我只能得到“街道”作為結果,那也很棒。 唯一的限制是我需要在根元素本身而不是數組中獲取它
像這樣的東西:
db.collection.aggregate([
{
$match: {
userid: "user1" , "address.type":"abc"
}
},
{
$project: {
userid: 1,
address: {
$filter: {
input: "$addresses",
as: "a",
cond: {
$eq: [
"$$a.type",
"abc"
]
}
}
}
}
},
{
$unwind: "$address"
},
{
$project: {
userid: 1,
street: "$address.street",
_id: 0
}
}
])
解釋:
為了獲得最佳結果,在 { userid:1 } 字段上創建索引或在 { userid:1, address.type:1 } 字段上創建復合索引
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.