的MongoDB查询文档超过X天以上,并没有创造,因为
问题描述:
我有一个看起来是这样的文件:的MongoDB查询文档超过X天以上,并没有创造,因为
{
_id: ObjectId('1234'),
name: 'Some name',
}
如何编写一个查询将返回地方_id创建超过60天前的文件(根据ObjectId中的生成时间),并且自那以后没有创建具有相同名称的文档。然后我想过滤掉只有名称不同的文档。
编辑:好的,如果文档现在看起来像这样,我该如何实现我期待的结果?
{
_id: ObjectId('1234'),
name: 'Some name',
created: Datetime()
}
答
> db.foo.findOne()._id.getTimestamp
function(){
return new Date(parseInt(this.valueOf().slice(0,8), 16)*1000);
}
这是贝壳助手功能getTimestamp
的来源,你想要做什么。但是在查询中使用它是不可能的。 Mongo无法在查询中使用16位数字或将其转换为10位数字。
如果你真的想用_id
作为时间来源,你必须得到整个集合,并在你的应用程序中进行转换。您应该为每个文档添加一个时间字段以获取文档的年龄。
老实说,我建议你改用日期时间。下面的答案是完美的,但使用基于ObjectId的这种方法太难了。 –
所以我很困惑,你的编辑过的文件有一个时间标记(创建:日期时间)?或者那个信息没有被放入文档中。 – jwillis0720
是的,我的原始文档没有“创建”字段。听Maximiliano Rios和Sergey Eremin我补充说。 – user3175546