我的文件看起来像这样:
{
_id: ObjectId('1234'),
name: 'Some name',
}
如何编写一个查询,该查询将返回60天前创建_id的文档(根据ObjectId中的生成时间),并且之后没有创建具有相同名称的文档。然后我想过滤到只有具有不同名称的文档。
编辑:好的,如果文档现在看起来像这样,我如何实现我想要的结果?
{
_id: ObjectId('1234'),
name: 'Some name',
created: Datetime()
}
答案 0 :(得分:0)
> db.foo.findOne()._id.getTimestamp
function (){
return new Date(parseInt(this.valueOf().slice(0,8), 16)*1000);
}
这是shell辅助函数getTimestamp
的源代码,可以执行您想要的操作。但是在查询中不可能使用它。 Mongo不能在查询中使用16个基数,也不能将它们转换为10个基数。
如果您真的想使用_id
作为时间源,则必须获取整个集合并在您的应用中进行转换。您绝对应该为每个文档添加一个时间字段来获取文档的年龄。