0
我试图使用ObjectId作为创建日期的持有者,并尝试执行聚合查询时遇到一些问题。特别是我们希望使用日期聚合操作符按月对文档进行分组,但该操作符显然不能与ObjectId一起使用。是否有解决方法,或者我必须开始为每个文档使用单独的CreationTime字段?Mongo日期汇总运算符与ObjectId
下面是一个查询我试图 -
db.People.aggregate([
{
$match: {
$or: [{"Name":"Random1"}, {"Name":"Random2"}]
}
},
{
$project: {
Name: "$Name",
Year: {$year: "$_id"},
Month: {$month: "$_id"}
}
},
{
$group: {
_id: {Name: "$Name", Year: "$Year", Month: "$Month"},
TotalRequests: {$sum:1}
}
}
])
如果_id是ObjectId类型,则它不能工作,因为它不是日期。它是一个日期的散列。据我所知,逆向操作是不可能的。 – innoSPG
实际上,ObjectID有一个[getTimestamp()方法](http://docs.mongodb.org/manual/reference/method/ObjectId.getTimestamp/#ObjectId.getTimestamp),但不能在AF上使用它。如果你真的想要这个功能,你应该对[this](https://jira.mongodb.org/browse/SERVER-9406)JIRA问题进行投票。 –