我有端运行的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 –