[英]Querying an embedded document in an array in MongoDB
我將此子文檔嵌入到數組中:
company:{
products:[
{ vehicle: "Toyota", Model: "Camry" },
{ vehicle: "Honda", Model: "Civic" },
{ vehicle: "Honda", Model: "Accord" },
{ vehicle: "Mercedes", Model: "vboot" },
]
}
如何選擇僅匹配的車輛
{vehicle:'Honda', Model:'Civic'}
從而:
company:{
products:[
{ vehicle: "Honda", Model: "Civic" },
]
}
給定這樣的文檔:
{
"_id" : ....,
"company" : [
{
"vehicle" : "Toyota",
"Model" : "Camry"
},
{
"vehicle" : "Honda",
"Model" : "Civic"
},
{
"vehicle" : "Honda",
"Model" : "Accord"
},
{
"vehicle" : "Mercedes",
"Model" : "vboot"
}
]
}
以下查詢使用$elemMatch
查詢運算符僅查找具有vehicle:'Honda' and Model:'Civic'
那些文檔:
db.collection.find(
{ company: { $elemMatch: { vehicle: 'Honda', Model: 'Civic' } } }
)
如果您只想返回公司數組中具有vehicle:'Honda' and Model:'Civic'
的第一個元素vehicle:'Honda' and Model:'Civic'
,則應使用$elemMatch
投影運算符 :
db.collection.find(
// only find documents which have a company entry having vehicle=Honda and model=Civic
{ company: { $elemMatch: { vehicle: 'Honda', Model: 'Civic' } } },
// for the documents found by the previous clause, only return the first element
// in the company array which has vehicle=Honda and model=Civic
{ company: { $elemMatch: { vehicle: 'Honda', Model: 'Civic' } } }
)
// returns:
{
"_id" : ObjectId("5a79613f85c9cec3a82c902c"),
"company" : [
{
"vehicle" : "Honda",
"Model" : "Civic"
}
]
}
從文檔:
$elemMatch
查詢運算子 ...
$elemMatch
運算符匹配包含一個數組字段的文檔,該數組字段的至少一個元素與所有指定的查詢條件匹配。
$elemMatch
投影運算符 ...
$elemMatch
運算符將查詢結果中<array>
字段的內容限制為僅包含與$elemMatch
條件匹配的第一個元素。
find()
關鍵字需要用於特定元素:
db.company.find({vehicle:"Honda",Model:"Civic"})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.