我在Yii2中使用此mongo extension。
我有2个名为ServiceProvider
和Parents
的集合。在ServiceProvider
中,有包含父母ID的子文档(PostCommentIDs)
。
另一个集合Parents
包含所有父信息。
我想加入2个系列。我通过以下mongo查询实现了它。
但是使用上面的扩展如何在Yii2中编写这个查询。
db.ServiceProvider.aggregate([
{
$unwind: "$PostCommentIDs"
},
{
$lookup:
{
from: "Parents",
localField: "PostCommentIDs",
foreignField: "ID",
as: "ParentDetails"
}
},
{
$match: { "ParentDetails": { $ne: [] } }
}
])
请帮忙。谢谢!
答案 0 :(得分:1)
找到解决方案。它可能对某人有帮助。
$collection = Yii::$app->mongodb->getCollection('ServiceProvider');
$result = $collection->aggregate(
['$unwind' => '$PostCommentUserIDs'],
[
'$lookup' =>
[
'from' => 'Parents',
'localField' => 'PostCommentUserIDs',
'foreignField' => 'ID',
'as' => 'ParentDetails'
]
],
[
'$match' => [
'ParentDetails' => [ '$ne' => [] ]
]
]
);
答案 1 :(得分:1)
在当前说明中使用这种方式:管道必须始终位于数组中
$collection = Yii::$app->mongodb->getCollection('ServiceProvider');
$result = $collection->aggregate([
['$unwind' => '$PostCommentUserIDs'],
[
'$lookup' =>
[
'from' => 'Parents',
'localField' => 'PostCommentUserIDs',
'foreignField' => 'ID',
'as' => 'ParentDetails'
]
],
[
'$match' => [
'ParentDetails' => [ '$ne' => [] ]
]
]
]);