為 nood 問題道歉。我剛開始使用 MongoDB 和 MongoDB Shell。
我有一個名為 Dealers 的資料庫,看起來有點像這樣(非常簡化):
[
{
"Id": 1,
"Vehicles": [
{
"Manufacturer": "Ford"
},
{
"Manufacturer": "MG"
},
{
"Manufacturer": "Citroen"
}
]
},
{
"Id": 2,
"Vehicles": [
{
"Manufacturer": "Ford"
},
{
"Manufacturer": "Nissan"
},
{
"Manufacturer": "Ford"
}
]
}
]
我正在嘗試了解如何在集合 EG 中過濾集合。假設我想從 ID 2 中選擇所有福特。
我得到:
const dealer = database.collection('Dealers');
const result = await dealer.find({Id: 2})
我試過了:
const result = await dealers.find({
Id: 2,
Vehicles: [
{
Manufacturer: "Ford"
}
]
})
但我知道這行不通,因為它沒有遍歷 Vehicles 集合。這是您將使用聚合的實體嗎?就像我說的,我對這種環境很陌生,非常感謝任何指點。
uj5u.com熱心網友回復:
我剛試過。您可以使用Aggregate 函式來實際匹配集合中陣列內的專案。就像下面的查詢將選擇所有 id 等于 1 和 Manufacturer 等于 Ford 的檔案一樣
db.MyCollection.aggregate([{$match:{Id:1}},{$unwind:"$Vehicles"}, {$match: {"Vehicles.Manufacturer":"Ford"}}]);
它是這樣回傳的。我使用了我自己的 ID,即等于一個,您可以更改它。

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/476761.html
標籤:javascript mongodb mongodb-shell
上一篇:陣列的MongoDB性能問題
