mongodb查询文件超过x天,并且从那以后都没有创建

时间:2014-01-09 00:29:43

标签: mongodb

我的文件看起来像这样:

{
    _id: ObjectId('1234'),
    name: 'Some name',
}

如何编写一个查询,该查询将返回60天前创建_id的文档(根据ObjectId中的生成时间),并且之后没有创建具有相同名称的文档。然后我想过滤到只有具有不同名称的文档。

编辑:好的,如果文档现在看起来像这样,我如何实现我想要的结果?

{
    _id: ObjectId('1234'),
    name: 'Some name',
    created: Datetime()
}

1 个答案:

答案 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作为时间源,则必须获取整个集合并在您的应用中进行转换。您绝对应该为每个文档添加一个时间字段来获取文档的年龄。