假設我在 MongoDB 中有一些資料,例如-
[
{
_id: new ObjectId("63608e3c3b74ed27b5bdf6fa"),
latitude: 24.3065,
hotels: [
{
name: "Saunders Oconnor",
latitude: 22.05869172633478,
longitude: 88.661309245504,
},
{
name: "Saunders Oconnor",
latitude: 22.05869172633478,
longitude: 88.661309245504,
},
],
},
{
_id: new ObjectId("63608e3c3b74ed27b5bdf6fa"),
latitude: 24.3065,
hotels: [
{
name: "Saunders Oconnor",
latitude: 22.05869172633478,
longitude: 88.661309245504,
},
{
name: "Saunders Oconnor",
latitude: 22.05869172633478,
longitude: 88.661309245504,
},
],
}
];
如何僅讀取與我的酒店名稱匹配的欄位。
我正在嘗試這個-
const hotel = await places.find({ name: placeName }).project({ hotels: 1 }).toArray();
它回傳給我一個陣列。喜歡 -
[
{
_id: new ObjectId("63608e3c3b74ed27b5bdf6f8"),
hotels: [ [Object], [Object], [Object], [Object], [Object] ]
}
]
但我不想要這個。如何僅讀取與酒店名稱匹配的欄位?喜歡 -
{
name: "Saunders Oconnor",
latitude: 22.05869172633478,
longitude: 88.661309245504,
}
uj5u.com熱心網友回復:
如果我理解正確,您可以使用此聚合管道:
- 第一步是解構陣列并可以將值用作物件。
- 然后
$match只得到你想要的酒店。 - 最后一步是投射你想要的價值觀。
db.collection.aggregate([
{
"$unwind": "$hotels"
},
{
"$match": {
"hotels.name": "Saunders Oconnor"
}
},
{
"$project": {
"name": "$hotels.name",
"latitude": "$hotels.latitude",
"longitude": "$hotels.longitude"
}
}
])
這里的例子
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/530896.html
