假設我的檔案如下所示:
_id: "6285e9a7aff93ead37ec50ad",
date: "2022-04-28T10:51:37.923Z",
devices: {
tablets: [
{
brand: "samsung",
model: "s20"
},
{
brand: "samsung",
model: "s21"
},
{
brand: "apple",
model: "ipad_mini"
},
],
phones: [
{
brand: "samsung",
model: "galaxy_s20"
},
{
brand: "samsung",
model: "galaxy_s20_lite"
}
],
laptops: []
}
}
我將如何查詢并回傳屬性中至少包含一個"apple"值的所有檔案?"brand""devices"
uj5u.com熱心網友回復:
當您有更多動態鍵時,您可以使用
db.collection.aggregate([
{
$project: {
"d": {
"$objectToArray": "$devices"
}
}
},
{
"$match": {
"d.v.brand": "apple"
}
}
])
如果需要,您需要重組資料。如果至少有一個匹配,則回傳。
操場
db.collection.aggregate([
{
$project: {
"d": {
"$objectToArray": "$devices"
}
}
},
{
"$match": {
"d.v.brand": "apple"
}
},
{
"$project": {
"devices": { //To reshape back
"$arrayToObject": "$d"
}
}
}
])
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481728.html
上一篇:結合來自兩個不同模型MongoDB的兩個不同查詢的結果
下一篇:我將如何用貓鼬選擇許多物件?
