我正在设置从Date字段到当天开始的时间
function getDate(date){ return new Date(date.getYear(), date.getMonth(),
date.getDate(), 0,0,0); }
...
{"$project" : {
"_id" : getDate("$dt"),
...
如果我发送"$dt"
我收到TypeError: date.getYear is not a function
因为我正在传递字符串,
如果删除引号,我会Error: "$dt is not defined"
,
"$dt"
设为"_id"
的值,我会获得正确的ISO日期。那么如何将日期对象传递给函数呢?
答案 0 :(得分:0)
MongoDB的聚合管道不支持JavaScript。要在聚合管道中处理结果的日期值,您需要使用Date Aggregation Operators。
例如:
db.date.aggregate([
{ $project: {
_id: { $dateToString: { format: "%Y%m%d", date: "$dt" }}
}}
])
假设您的文档中包含一个名为dt
且日期值为ISODate("2017-07-01T10:01:23.344Z")
的字段,结果将如下所示:
{
"result": [
{
"_id": "20170701"
}
],
"ok": 1
}
注意:如果您在同一天有多个文档,则此方法会在结果中创建重复的_id
值。如果您的目的是组合同一天的值,您可能希望投射到其他字段名称或使用$group
阶段而不是$project
。