<template id="chpz_order_searchOrderListByOrderState"><![CDATA[
{
$match: {
requirement_type:"car",
"$or" : [ { "from_user_id" : "${user_id}"} , { "shr_user_id" : "${user_id}"},{ "to_user_id" : "${user_id}"}],
#if(order_state =='order_state_create')
order_state:"order_state_create",
#end
#if(order_state =='order_state_wait_transport')
#if(user_type =='201' || user_type =='301'||user_type =='302')
order_state:{$in:["order_state_wait_transport","order_state_create"]},
#else
order_state:"order_state_wait_transport",
#end
#end
#if(order_state =='order_state_in_transport')
order_state:"order_state_in_transport",
#end
#if(order_state =='order_state_finish')
order_state:{$in:["order_state_received_end","order_state_already_evaluate","order_state_already_cancle"]}
#end
}
}
--split--marker--
{
$sort: {
"create_time":-1
}
}
--split--marker--
{
$skip: ${skip}
}
--split--marker--
{
$limit: ${limit}
}
--split--marker--
{
$lookup: {
"from" : "chpz_car_requirement",
"localField" : "requirement_id",
"foreignField" : "id",
"as" : "carRequirement"
}
}
--split--marker--
{
$unwind: {
path : "$carRequirement",
preserveNullAndEmptyArrays : true
}
}
--split--marker--
{
$lookup: {
"from" : "chpz_requirement_match",
"localField" : "requirement_match_id",
"foreignField" : "id",
"as" : "requirementMatch"
}
}
--split--marker--
{
$unwind: {
path : "$requirementMatch",
preserveNullAndEmptyArrays : true
}
}
--split--marker--
{
$lookup: {
"from" : "chpz_car",
"localField" : "requirementMatch.car_id",
"foreignField" : "id",
"as" : "car"
}
}
--split--marker--
{
$unwind: {
path : "$car",
preserveNullAndEmptyArrays : true
}
}
--split--marker--
{
$lookup: {
"from" : "chpz_user",
"localField" : "car.user_id",
"foreignField" : "id",
"as" : "user"
}
}
--split--marker--
{
$unwind: {
path : "$user",
preserveNullAndEmptyArrays : true
}
}
--split--marker--
{
$project: {
"id":"$id",
"no":"$no",
"order_state":"$order_state",
"platform_pay_carriage_state":"$platform_pay_carriage_state",
"payer_pay_carriage_state":"$payer_pay_carriage_state",
"platform_pay_goods_state":"$platform_pay_goods_state",
"payer_pay_goods_state":"$payer_pay_goods_state",
"platform_pay_storage_state":"$platform_pay_storage_state",
"payer_pay_storage_state":"$payer_pay_storage_state",
"platform_pay_carriage_money":"$platform_pay_carriage_money",
"payer_pay_carriage_money":"$payer_pay_carriage_money",
"platform_pay_goods_money":"$platform_pay_goods_money",
"payer_pay_goods_money":"$payer_pay_goods_money",
"requirement_id":"$requirement_id",
"goods_name":"$goods_name",
"from_lxdh":"$from_lxdh",
"to_lxdh":"$to_lxdh",
"requirement_type":"$requirement_type",
"requirement_match_id":"$requirement_match_id",
"enquiry_id":"$enquiry_id",
"carriage_is_daishou":"$carriage_is_daishou",
"carriage_pay_side_type":"$carriage_pay_side_type",
"carriage_pay_time_type":"$carriage_pay_time_type",
"carriage_pay_agreement_type":"$carriage_pay_agreement_type",
"carriage_pay_money":"$carriage_pay_money",
"goods_is_daishou":"$goods_is_daishou",
"goods_pay_side_type":"$goods_pay_side_type",
"goods_pay_time_type":"$goods_pay_time_type",
"goods_pay_agreement_type":"$goods_pay_agreement_type",
"goods_pay_money":"$goods_pay_money",
"storage_is_daishou":"$storage_is_daishou",
"storage_pay_side_type":"$storage_pay_side_type",
"storage_pay_time_type":"$storage_pay_time_type",
"storage_pay_agreement_type":"$storage_pay_agreement_type",
"storage_pay_money":"$storage_pay_money",
"llwl_record_id":"$llwl_record_id",
"from_user_id":"$from_user_id",
"to_user_id":"$to_user_id",
"shr_user_id":"$shr_user_id",
"warehouse_user_id":"$warehouse_user_id",
"disbursement_channel":"$disbursement_channel",
"order_cancle_side":"$order_cancle_side",
"order_cancle_time":"$order_cancle_time",
"liquidated_damages":"$liquidated_damages",
"user_id":"$user_id",
"create_time":"$create_time",
"update_time":"$update_time",
"driver_name":"$car.driver_name",
"car_original_url":"$car.car_original_url",
"car_state":"$car.car_state",
"user_state":"$user.user_state",
"user_image":"$user.original_image_url",
"fhr_hw_address":"$carRequirement.fhr_hw_address",
"shr_address":"$carRequirement.shr_address",
"goods_type":"$carRequirement.goods_type",
"car_type":"$carRequirement.car_type",
"goods_total_volume":"$carRequirement.goods_total_volume",
"goods_total_weight":"$carRequirement.goods_total_weight",
"goods_num":"$carRequirement.goods_num",
"yj_fh_time":"$carRequirement.yj_fh_time",
"remark":"$carRequirement.remark",
"requirement_no":"$carRequirement.no",
}
}
]]></template>
<template id="countOrderByCondition"><![CDATA[
{
$match: {
requirement_type:"car",
"$or" : [ { "from_user_id" : "${user_id}"} , { "shr_user_id" : "${user_id}"},{ "to_user_id" : "${user_id}"}],
#if(order_state =='order_state_create')
order_state:"order_state_create",
#end
#if(order_state =='order_state_wait_transport')
#if(user_type =='201' || user_type =='301'||user_type =='302')
order_state:{$in:["order_state_wait_transport","order_state_create"]},
#else
order_state:"order_state_wait_transport",
#end
#end
#if(order_state =='order_state_in_transport')
order_state:"order_state_in_transport",
#end
#if(order_state =='order_state_finish')
order_state:{$in:["order_state_received_end","order_state_already_evaluate","order_state_already_cancle"]}
#end
}
}
--split--marker--
{
$lookup: {
"from" : "chpz_car_requirement",
"localField" : "requirement_id",
"foreignField" : "id",
"as" : "carRequirement"
}
}
--split--marker--
{
$unwind: {
path : "$carRequirement",
preserveNullAndEmptyArrays : true
}
}
--split--marker--
{
$lookup: {
"from" : "chpz_requirement_match",
"localField" : "requirement_match_id",
"foreignField" : "id",
"as" : "requirementMatch"
}
}
--split--marker--
{
$unwind: {
path : "$requirementMatch",
preserveNullAndEmptyArrays : true
}
}
--split--marker--
{
$lookup: {
"from" : "chpz_car",
"localField" : "requirementMatch.car_id",
"foreignField" : "id",
"as" : "car"
}
}
--split--marker--
{
$unwind: {
path : "$car",
preserveNullAndEmptyArrays : true
}
}
--split--marker--
{
$lookup: {
"from" : "chpz_user",
"localField" : "car.user_id",
"foreignField" : "id",
"as" : "user"
}
}
--split--marker--
{
$unwind: {
path : "$user",
preserveNullAndEmptyArrays : true
}
}
--split--marker--
{
$group: {
_id:null,
totalCount:{$sum:1}
}
}
]]></template>MongoDB多表关联查询
最新推荐文章于 2024-11-20 14:28:12 发布
本文展示了如何在MongoDB中进行多表关联查询,包括使用$lookup、$unwind等聚合操作,查询涉及到chpz_order、chpz_car_requirement、chpz_requirement_match、chpz_car及chpz_user等多个集合,主要用于订单状态筛选和计数。
3421

被折叠的 条评论
为什么被折叠?



