我有两个收藏集rounds
和summaries
rounds
中的记录看起来像
{
"_id": "2018-04",
"name": "Round 2018-04"
}
summaries
中的记录如下
{
"phase": "round:2018-04",
"userId": NumberLong(66325),
}
我想查询summaries
并基于rounds
的{{1}}到phase
的{{1}}中的summaries
联接
问题:如果阶段中没有_id
的前缀,这将非常简单。
反正有这样做吗?
到目前为止,这是我的代码。
rounds
MongoDB 3.4.16版
答案 0 :(得分:1)
您可以使用substrBytes
从字符串中删除字符。
$cursor = $this->mongo->selectCollection('summaries')->aggregate([
array('$match' => []),
array('$addFields' => [ 'phase' => [ '$substrBytes' => [ '$phase', 6, 7 ] ] ] ),
array(
'$lookup' => [
'from' => 'rounds',
'localField' => 'phase',
'foreignField' => '_id',
'as' => 'roundDetail'
]
),
array(
'$unwind' => '$roundDetail',
),
array(
'$project' => [
'userId' => 1,
'roundDetail.name' => 1
]
)
])