我正在使用mongodb agreegate框架,这就是我的普通对象的样子
{
"_id" : "6b109972c9bd9d16a09b70b96686f691bfe2f9b6",
"history" : [
{
"dtEntry" : 1428929906,
"type" : "I",
"refname" : "ref1"
},
{
"dtEntry" : 1429082064,
"type" : "U",
"refname" : "ref1"
}
],
"c" : "SomeVal",
"p" : "anotherVal"
}
这里history.dtEntry是一个纪元价值(请不要建议我在进入这里之前将其改为isodate,它超出了我的范围)。 我想将c,p。history.type和history.dtEntry投影为(星期几)。
db.mydataset.aggregate({$project:{c:1,p:1,type:"$history.type",DtEntry:"$history.dtEntry",dater:{$dayOfMonth:new Date(DtEntry)}}})
如果我直接使用任何纪元价值,那么月份出来就好了,但我必须传递dtEntry的值,这两种方式似乎都不适合我 我试过了
$dayOfMonth:new Date(DtEntry)
$dayOfMonth:new Date(history.DtEntry)
$dayOfMonth:new Date("history.DtEntry")
$dayOfMonth:new Date("$history.DtEntry")
答案 0 :(得分:2)
我发现其他一些方法可能对您有所帮助,请查看以下聚合查询
db.collectionName.aggregate({
"$unwind": "$history"
}, {
"$project": {
"c": 1,
"p": 1,
"type": "$history.type",
"dater": {
"$dayOfMonth": {
"$add": [new Date(0), {
"$multiply": ["$history.dtEntry", 1000]
}]
}
}
}
})