【发布时间】:2017-07-29 06:01:21
【问题描述】:
我有两个系列,一个是 order_master,另一个是 product_master。 我只需要获取特定产品名称为“tops”的订单
这是我的收藏 订单大师
_id
o_type
product_data
->0
->product_id
->shipping_details
Product_master
_id
product_name
product_type
根据产品名称,我必须选择订单详情
例如:
Select * from order_master om inner join product_master pm on pm._id = om.product_data.product_id where pm.product_name = 'top'
类似的
如何在 mongo db 中编写
我试过这样
$collection = $this->mongo_db->db->selectCollection('product_master');
$request = $collection->aggregate(
array(
'$match' => array(
'$and' => array(
array('product_name' => 'top')
)
)
),
array(
'$lookup' => array(
'from' => "order_master",
'localField' => "product_data.p_id",
'foreignField' => "_id",
'as' => "product_data"
)
)
);
【问题讨论】:
-
只是我的两分钱:MongoDB 不是 RDBMS 的花哨版本。如果您尝试以 SQL 方式对数据进行建模并使 MongoDB 符合它,那么您将得到两全其美的结果(也许除了副本集)。仔细阅读有关数据建模的文档并重新考虑您的数据模型。如果您需要加入,您为您的用例过度规范化的可能性非常高。
标签: mongodb