我需要使用以下命令获取一天中处理的日志和订单:
但是如果我使用$ eq,结果总是返回空。但是,如果我使用$ gte进行日期比较($$ order.LogDate),那么我会得到订单计数。但匹配的数据在数据库中可用。知道我在哪里做错了吗?我还尝试将$ gte和$ lte与日期和日期+1天配合使用。仍然没有运气:
{
"_id" : 0,
"FirstName" : { "$arrayElemAt" : ["$drivers.FirstName", 0] },
"LastName" : { "$arrayElemAt" : ["$drivers.LastName", 0] },
"PhoneNumber" : { "$arrayElemAt" : ["$drivers.ContactNo", 0] },
"LogDate" : "$_id.LogDate",
"LogDateEnd":{ $add: [ "$_id.LogDate", 86400000 ] },
"TotalMinutes" : "$TotalMinutes",
"OrderCount" : {
"$size" : {
"$filter" : {
"input" : "$orders",
"as":"order",
"cond" : {
"$and" : [{ "$eq" : ["$$order.OrderStatus", "COMPLETE"] },{ "$eq" : ["$$order.LogDate", "$LogDate"] }]
}
}
}
}
}
答案 0 :(得分:1)
当您比较日期时,除非它们相同,否则不会发生匹配。
import control
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from collections import namedtuple
PlantFreqResp = namedtuple("PlantFreqResp", ["mag", "phase", "omega"])
s=control.tf([1,0],1)
freqs=np.logspace(-1,2,5)
# if you care about the formula names, use a dict
plant_formulas = [1/(s*s), # plant
1/(s*s)*(1+1/10/s), # plant_PI
1/(s*s)*(1+s/(1/3))/(1+s/(1*3))/3] # plant_D
plant_freqs = [PlantFreqResp(*formula.freqresp(freqs))
for formula in plant_formulas]
fig=plt.figure()
ax1=fig.add_subplot(2,1,1)
ax2=fig.add_subplot(2,1,2)
for freqs in plant_freqs:
ax1.plot(freqs,np.squeeze((freqs.mag),axis=(3,)))
ax2.plot(freqs,np.squeeze((i=freqs.phase),axis=(3,)))
plt.show()
即使这些日期实际上是相同的,相差1毫秒也足以使ISODate("2018-07-05T07:14:59.191+0000")
ISODate("2018-07-05T07:14:59.192+0000")
运算符返回false。
如果您希望某天的所有$eq
,您要做的就是使用$dayOfMonth之类的日期表达式进行匹配,如下所示:
orders
这将从下一年"OrderCount": {
"$size": {
"$filter": {
"input": "$orders",
"as": "order",
"cond": {
"$and": [
{"$eq": ["$$order.OrderStatus", "COMPLETE"]},
{"$eq": [{$year: "$$order.LogDate"}, {$year: "$LogDate"}]},
{"$eq": [{$month: "$$order.LogDate"}, {$month: "$LogDate"}]},
{"$eq": [{$dayOfMonth: "$$order.LogDate"}, {$dayOfMonth: "$LogDate"}]}
]
}
}
}
}
的那一天开始下订单。