mongodb - 错误信息查找管道必须是字符串,是数组类型
问题描述
我正在使用 mongodb 3.6 版本。
我有载有文件的车辆表
{
"_id": ObjectId("5b976220d2ccda12fc0050fb"),
"VehicleNumber": "JK 678",
"NumberOfSeats": "47",
}
{
"_id": ObjectId("67976220d2ccda12fc005068"),
"VehicleNumber": "JK 779",
"NumberOfSeats": "47",
}
我有包含数据的路由表
{
"_id": ObjectId("5b7fb426d2ccda11fc005185"),
"Name": "New Jersey City",
"VehicleDetails": [
{
"VehicleEntryId": "b8d0d2b5-8f32-6850-4d79-34ed79138d6d",
"VehicleId": ObjectId("5b976220d2ccda12fc0050fb"),
...
"Status": "Active"
},
{
"VehicleEntryId": "b8d0d2b5-8f32-6850-4d79-34ed79138568",
"VehicleId": ObjectId("67976220d2ccda12fc005068"),
...
"Status": "Active"
}
],
...
}
我已经写了 mongodb 聚合查询,比如
$cursor = $this->collection->aggregate([
['$match' => ["_id" => new MongoDB\BSON\ObjectID('5b7fb426d2ccda11fc005185')]],
[
'$addFields' => [
'filteredIds' => [
'$map' => [
'input' => '$VehicleDetails',
'as' => 'item',
'in' => [
'$cond' => [
['$eq' => ['$$item.Status', 'Active']],
'$$item.VehicleId',
false
]
]
]
]
]
],
array(
'$lookup' => array(
'from' => 'VehicleTbl',
'$pipeline' => [
[ '$match'=> ["_id" => ['$in' => ['$$filteredIds'] ]]],
],
'as' => 'AllotedVehicleDetails'
)
),
])->toArray();
基本上我正在尝试将所有分配的车辆提取到特定路线。因此,我首先使用 $addFeilds 运算符获取所有主动分配的车辆 ID,并将它们放在“filteredIds”中,然后在查找中尝试使用管道从车辆表中获取车辆信息。上面的代码抛出错误消息'未捕获的异常'MongoDB\Driver\Exception\RuntimeException'和消息'$lookup argument'$pipeline: [ { $match: { _id: { $in: [ "$$filteredIds" ] } } } ]' 必须是字符串,是第 32 行中的数组类型。
请帮忙!!!
解决方案
使用pipeline
而不是$pipeline
.
例子:
{
$lookup : {
'from' : 'vehicles',
let : { localFilterIds : '$filteredIds'},
pipeline : [
{'$match' : { $expr: { '$in' : [ '$_id', '$$localFilterIds' ] }} }
],
'as' : 'AllotedVehicleDetails'
}
}
注意:这是在mongoDb
GUI中测试的Robo 3T
。
推荐阅读
- java - 如何在我的项目中使用 Comparator 方法
- wordpress - 如何以编程方式在 Elementor 中获取/初始化特定于后期的 javascript 代码?
- html - 如何在 html 的 mailTo 标记内添加粗体文本?
- java - 如何为 LiveData 对象编写显式 Moshi JsonAdapter
- android - 用户点击BottomNavigationBarItem时如何显示颤动的modalBottomSheet
- android - 创建新变体后无法构建 Android 项目
- css - 反应显示具有透明样式背景的png图像
- flutter - 找不到 Helpers.invokeStatic 领域颤动
- python - RuntimeError:事件循环已关闭(我不知道为什么)
- c++ - 使用 opencv 和 Visual Studio 2019 安装 BGSlibrary 时出现问题