我有端運行的MongoDB的版本3.2.6實例兩個集合:
- ManufacturerDevices
- 製造商
我使用集合函數來加入他們的行列:
db.ManufacturerDevices.aggregate([
{ $lookup: {
from: 'Manufacturers',
localField: 'manufacturer_id',
foreignField: '_id',
as: 'manufacturer',
}},
{ $project: {
_id: true,
name: true,
images: true,
device_id: true,
device_name: true,
// Returns an array
manufacturer_name: "$manufacturer.manufacturer_name",
}},
{ $limit: 1 }
]);
這可以作爲EXPEC特德,除了manufacturer_name
正在返回作爲[數組],我期待一個字符串。
這是導致我的問題是稍遠一點的路線,在這裏我想串聯device_name
和manufacturer_name
進入一個新的領域被稱爲'complete_device'
:
complete_device: {
$concat: [
"$manufacturer.manufacturer_name",
"$name"
]
}
不出所料這將返回錯誤
「errmsg」:「$ concat只支持字符串,不支持Array」。
我曾嘗試使用$slice
函數返回的"$manufacturer.manufacturer_name"
0索引值:
{$slice: ["$manufacturer.manufacturer_name", 1]}
不過這也返回數組,導致同樣的錯誤。
如何在我的$cat
邏輯中使用/返回"$manufacturer.manufacturer_name"
作爲字符串使用?
您還可以使用{$開卷:「$製造商」}轉換數組對象,然後CONCAT –