
但是在多进程中调用同一个连接对象时却会导致错误,不能从主进程fork出mongo连接。
因此,在多进程中调用MongoDB连接时,不能使用单例模式,应该为每个进程创建新的MongoClient对象才行。
类似MySQL的select * from EVI_EGZ_GEAR_DAY where quantity0=27
类似MySQL的select * from EVI_EGZ_GEAR_DAY where lastModify>"2020-07-02T16:08:45+08:00"
db.EVI_BIZ_DAYINFO.find({"ReportDay":{$gte:20200601 ,$lte: 20200630},"LoginID":"304095318","Is_Statistics":1})
*** 作 格式 范例 RDBMS中的类似语句
等于 {<key>:<value>} db.col.find({"by":"菜鸟教程"}).pretty() where by = '菜鸟教程'
小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes <50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes >50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50
类似MySQL的select loginId from EVI_EGZ_GEAR_DAY group by loginId
类似MySQL的select loginId,count(*) from EVI_EGZ_GEAR_DAY where loginId=100870655 group by loginId
5.db.EVI_RPT_MARKETMON_ANALYSIS.find({"reportTime":"201810","areaParentCode":"430000","machineCode":"MT0000000212","machineType":"2","nationCode":"CN","calcType":"0"},
{"areaName":1,"machineName":1,"workTime":1,"equCount":1,"workCount":1,"restCount":1,"highWorkCount":1,"avgWorkTime":1,"workRate":1,"calcType":"1"}).sort({ equCount:-1 })
db.EVI_BIZ_DAYINFO.aggregate([{
"$match": {
"ReportTime" : ISODate("2020-07-01T00:00:00.000+08:00"),
"Is_Statistics": 1,
"IsOnline": 1,
"MachineType_Code1" : "MT0000000276"// 按照一级机型分类统计,否则查询不到数据
}
},
{
"$group" : {
_id:{
countyCode :"$County_Code",
cityCode :"$City_Code",
provinceCode :"$Province_Code",
machineType1 :"$MachineType_Code1",
machineType2 :"$MachineType_Code2",
nationCode:"$Nation_Code"
},
highWorkCount : {$sum: { $cond: [ {$gte: [ "$WorkTime",8] },
1,
0 ] }},
countWork: {
$sum: '$IsWork'
},
workTime: {
$sum: '$WorkTime'
},
equCount:{
$sum: 1
}
}
}
])
db.EVI_BIZ_DAYINFO.find({"ReportDay":20200201,"LoginID":"302060888"})
db.EVI_BIZ_DAYINFO.aggregate([{
"$match": {"LoginID":"101065868",
"ReportDay":{$gte: 20200701,$lte:20200731}
}
},
{
"$group": {
_id:{
LoginID:"$LoginID",
ReportDay:"$ReportDay"
},
},
WorkTimes:{
$sum: "$WorkTime"
},
totalDay:{
$sum: {$cond: [ { $gt: ["$WorkTime",0]}, 1, 0 ]}
}
}
},
{"$match": {WorkTimes:{$gt:0}}}
])
db.EVI_ALARM_FLEET.update({"reportTime":ISODate("2020-08-21T00:00:00.000+08:00")},{$set:{"reportTime":ISODate("2020-08-22T00:00:00.000+08:00")}},false,true)
db.EVI_ALARM_FLEET.update({"reportTime":ISODate("2020-08-21T00:00:00.000+08:00")},{$set:{"reportTime":ISODate("2020-08-22T00:00:00.000+08:00")}})
db.EVI_BIZ_DAYINFO.find({$or:[{"LoginID":"104259298"},{"LoginID":"132349918"}]})
db.configuration.find({"envType":"hxevi.test","key":{$regex:/mail/}})
相当于MySQL的select * from configuration where envType='hxevi.test' and key like '%mail%'
db.EVI_BIZ_DAYINFO.aggregate([
{
"$match": {
"ReportTime":{"$gte":ISODate("2021-01-18T00:00:00.000+08:00"),"$lte":ISODate("2021-01-24T00:00:00.000+08:00")},
"Is_Statistics": 1,
"LoginID": "101102108"
}
},
{"$sort": {"ReportTime": -1}},
{
"$group": {
"_id": "$LoginID",
"WorkTime": {
"$sum": "$WorkTime"
},
"IdleTime": {
"$sum": "$IdleTime"
},
"FuelConsume": {
"$sum": "$FuelConsume"
},
"IdleFuelConsume": {
"$sum": "$IdleFuelConsume"
},
"ReportTime": {"$first": "$ReportTime"},
"City_Code": {"$first": "$City_Code"},
"City_Name": {"$first": "$City_Name"},
"County_Code": {"$first": "$County_Code"},
"County_Name": {"$first": "$County_Name"},
"Nation_Code": {"$first": "$Nation_Code"},
"Nation_Name": {"$first": "$Nation_Name"},
"Province_Code": {"$first": "$Province_Code"},
"Province_Name": {"$first": "$Province_Name"},
"Latitude": {"$first": "$Latitude"},
"Longitude": {"$first": "$Longitude"},
"TotalIdleFC": {"$first": "$TotalIdleFC"},
"TotalIdleTime": {"$first": "$TotalIdleTime"},
"TotalWorkTime": {"$first": "$TotalWorkTime"},
"TotalFC": {"$first": "$TotalFC"},
"DataVersion": {"$addToSet": '$DataVersion'},
"Machine_Model": {"$addToSet": '$Machine_Model'},
"MachineType_Code1": {"$addToSet": '$MachineType_Code1'},
"MachineType_Code2": {"$addToSet": '$MachineType_Code2'},
"MachineType_Code3": {"$addToSet": '$MachineType_Code3'},
"MachineType_Name1": {"$addToSet": '$MachineType_Name1'},
"MachineType_Name2": {"$addToSet": '$MachineType_Name2'},
"MachineType_Name3": {"$addToSet": '$MachineType_Name3'},
"Serialno": {"$addToSet": '$Serialno'},
"Customer_Code": {"$addToSet": '$Customer_Code'},
"Customer_Name": {"$addToSet": '$Customer_Name'},
"Customer_Tel": {"$addToSet": '$Customer_Tel'},
"SaleDealer": {"$addToSet": '$SaleDealer'},
"SaleDealer_Code": {"$addToSet": '$SaleDealer_Code'},
"SvrDealer": {"$addToSet": '$SvrDealer'},
"SvrDealer_Code": {"$addToSet": '$SvrDealer_Code'},
"Register_Date": {"$addToSet": '$Register_Date'},
"sumIsOnline": {"$sum": '$IsOnline'}
}
},
{
"$project":{
"LoginID":"$_id",
"WorkTime":"$WorkTime",
"IdleTime":"$IdleTime",
"FuelConsume":"$FuelConsume",
"IdleFuelConsume":"$IdleFuelConsume",
"City_Code":"$City_Code",
"City_Name": "$City_Name",
"County_Code": "$County_Code",
"County_Name": "$County_Name",
"Nation_Code": "$Nation_Code",
"Nation_Name": "$Nation_Name",
"Province_Code": "$Province_Code",
"Province_Name": "$Province_Name",
"Latitude": "$Latitude",
"Longitude": "$Longitude",
"TotalIdleFC": "$TotalIdleFC",
"TotalIdleTime": "$TotalIdleTime",
"TotalWorkTime": "$TotalWorkTime",
"TotalFC": "$TotalFC",
"DataVersion": {"$arrayElemAt":["$DataVersion",0]},
"Machine_Model": {"$arrayElemAt":["$Machine_Model",0]},
"MachineType_Code1": {"$arrayElemAt":["$MachineType_Code1",0]},
"MachineType_Code2": {"$arrayElemAt":["$MachineType_Code2",0]},
"MachineType_Code3": {"$arrayElemAt":["$MachineType_Code3",0]},
"MachineType_Name1": {"$arrayElemAt":["$MachineType_Name1",0]},
"MachineType_Name2": {"$arrayElemAt":["$MachineType_Name2",0]},
"MachineType_Name3": {"$arrayElemAt":["$MachineType_Name3",0]},
"Serialno": {"$arrayElemAt":["$Serialno",0]},
"Customer_Code": {"$arrayElemAt":["$Customer_Code",0]},
"Customer_Name": {"$arrayElemAt":["$Customer_Name",0]},
"Customer_Tel": {"$arrayElemAt":["$Customer_Tel",0]},
"SaleDealer": {"$arrayElemAt":["$SaleDealer",0]},
"SaleDealer_Code": {"$arrayElemAt":["$SaleDealer_Code",0]},
"SvrDealer": {"$arrayElemAt":["$SvrDealer",0]},
"SvrDealer_Code": {"$arrayElemAt":["$SvrDealer_Code",0]},
"Register_Date": {"$arrayElemAt":["$Register_Date",0]},
"IsOnline": {"$cond": {
"if":{"$gt":["$sumIsOnline",0]},"then":1,
"else":0
}}
}
}],
{ allowDiskUse: true }).pretty()
# https://www.cnblogs.com/cangqinglang/p/14858131.htmlpublic function index(){
// 方法1 您可以使用 $toObjectId聚合实现此目的,该聚合仅将字符串ID转换为mongoose objectId
// https://blog.csdn.net/az9996/article/details/110141289
// 多表查询 https://blog.csdn.net/eric_to/article/details/90093806
$pipeline = [
['$addFields'=>['company_id'=>['$toObjectId'=>'$company_id']]],
['$match'=>['$expr'=>['$eq'=>["\$company_id", "$\$company_Id"]]]],
]
$pipelines = [
// ['$match'=>["_id"=>new \MongoDB\BSON\ObjectId("5cb7e580a6c98abc468b458b")]],
// ['$match'=>["name"=>"xxx限公司"]],
[
'$lookup'=>[
'from'=>'oa_company_member_pay',
"let"=>["company_Id"=>"\$_id" ],
"pipeline"=>$pipeline,
'as'=>'company_pay'
],
]
]
// php 执行 产生了 2571 条数据 但是 用 db.runCommand() 执行 打印的 sql 语句 只有 101 条记录
dump(Db::connect('mongo')->name('oa_company')->cmd([
'aggregate'=>'oa_company',
'pipeline'=>$pipelines,
'explain'=>false,
]))
dump(Db::connect('mongo')->getLastSql())
// 以下 mongodb sql 在 数据库 查询 通过 有 2571 条记录
// db.getCollection("oa_company").aggregate([
// {
// "$lookup": {
// "from": "oa_company_member_pay",
// "let": { "company_Id": "$_id" },
// "pipeline": [
// { '$addFields': { "company_id": { "$toObjectId": "$company_id" }}},
// { "$match": { "$expr": { "$eq": [ "$company_id", "$$company_Id" ] } } }
// ],
// "as": "company_member_pay"
// }
// }
// ])
// 以下 mongodb sql 在 数据库 查询 通过 只有 101 条记录
// db.runCommand({
// "aggregate":"oa_company",
// "pipeline":[
// {
// "$lookup":{
// "from": "oa_company_member_pay",
// "let": { "company_Id": "$_id" },
// "pipeline": [
// { '$addFields': { "company_id": { "$toObjectId": "$company_id" }}},
// { "$match": { "$expr": { "$eq": [ "$company_id", "$$company_Id" ] } } }
// ],
// "as": "company_member_pay"
// }
// }
// ],
// "explain":false
// })
// 方法2 或者使用$toString聚合 可以通过 2571
// db.getCollection('oa_company').aggregate([
// { "$addFields": { "companyidStr": { "$toString": "$_id" }}},
// { "$lookup": {
// "from": "oa_company_member_pay",
// "localField": "companyidStr",
// "foreignField": "company_id",
// "as": "pay"
// }}
// ])
/*
$pipelines = [
// ['$match'=>["_id"=>new \MongoDB\BSON\ObjectId("5cb7e580a6c98abc468b458b")]],
// ['$match'=>["name"=>"xxx有限公司"]],
['$addFields'=>['companyidStr'=>['$toString'=>'$_id']]],
[
'$lookup'=>[
'from'=>'oa_company_member_pay',
'localField'=>'companyidStr',
'foreignField'=>'company_id',
'as'=>'company_pay'
],
]
]
// php 执行 产生了 2571 条数据 但是 用 db.runCommand() 执行 打印的 sql 语句 只有 101 条记录
dump(Db::connect('mongo')->name('oa_company')->cmd([
'aggregate'=>'oa_company',
'pipeline'=>$pipelines,
'explain'=>false,
]))
dump(Db::connect('mongo')->getLastSql())
// db.cmd({"aggregate":"oa_company","pipeline":[{"$addFields":{"companyidStr":{"$toString":"$_id"}}},{"$lookup":{"from":"oa_company_member_pay","localField":"companyidStr","foreignField":"company_id","as":"company_pay"}}],"explain":false})
// 下面 执行 不可以 只有 101 条数据
db.runCommand({"aggregate":"oa_company","pipeline":[{"$addFields":{"companyidStr":{"$toString":"$_id"}}},{"$lookup":{"from":"oa_company_member_pay","localField":"companyidStr","foreignField":"company_id","as":"company_pay"}}],"explain":false})
*/
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)