我有一个文档,它有一个类似{'year-month-day','others'}
的模式,我想把'year-month-day
转换成一个ISODate时间,这样我就可以使用$match:{'$gte:targetDate'}
我有几个问题:
new Date()
,同时datetime
也不能正常工作,因为它不能读取'$year'
。你知道吗我认为实现上述目标的一种方法是首先获得'year-month-day'
的子字符串,在聚合之后,我可以使用forEach(function(x){...})
为每个日期创建一个ISODate
,并与target
进行比较,但这样做意味着我必须扫描数据库中的每个文档,我认为这不是一个好的选择。你知道吗
如果第一个在pymongo中是不可行的,那么如何通过mongodb查询来实现呢?如何使用project创建具有新数据类型的列?(就像我在第二个项目中所做的那样)。
有没有办法在pymongo里面做javascrip?
我的剧本如下:
Collection.aggregate([
{
'$project':{
'year':{'$substr':['$year-month-day',0,4]},
'month':{'$substr':['$year-month-day',5,2]},
'day':{'$substr':['$year-month-day',8,2]},
'others':'others'
}
},
{
'$project':{
'approTime':new Date(Date.UTC('$year','$month','$day')),
'others':'others'
}
},
{
'$group':{
'_id':{
'approTime':'$approTime',
'others':'others'
},
'count':{'$sum':1}
}
}
您可以尝试使用datetime模块将字段
'year-month-day'
转换为mongoDB native ISODate数据类型,该模块作为mongoDB中的native date对象存储在hood下:在Mongo shell中也可以这样做:
相关问题 更多 >
编程相关推荐