是否可以删除apachecouchdb';什么是暂时的看法?
我的数据库中的所有文档都有时间戳: 示例文件:是否可以删除apachecouchdb';什么是暂时的看法?,couchdb,Couchdb,我的数据库中的所有文档都有时间戳: 示例文件: { ... "timestamp": 1404587326, ... } 使用map reduce,我可以过滤所有早于某个日期的文档,例如早于昨天的文档,但如何删除那些早于昨天的文档 function(doc) { var yesterday = Date.now() - (60*60*24); if(doc.timestamp < yesterday) { delete(doc._i
{
...
"timestamp": 1404587326,
...
}
使用map reduce,我可以过滤所有早于某个日期的文档,例如早于昨天的文档,但如何删除那些早于昨天的文档
function(doc) {
var yesterday = Date.now() - (60*60*24);
if(doc.timestamp < yesterday) {
delete(doc._id); // how??
}
}
功能(doc){
var昨天=日期。现在()-(60*60*24);
如果(文件时间戳<昨天){
删除(doc._id);//如何删除??
}
}
首先,您的map reduce代码不起作用强>
仅当文档正在更改时,才会调用map函数。因此,Date.now()
函数将是文档更改后第一次调用map函数的日期,而不是访问函数生成的索引的实际时间
另外,我不知道您可以在视图中删除文档
这就是你如何实现它的方法
在映射函数中将日期用作ID,并返回文档的ID。
然后使用客户端应用程序调用带有startkey
参数的视图,您可以将该参数设置为Date.now()-24*60*60
然后,视图将只返回比startkey
更新的文档,但不会删除任何文档
您的映射函数将类似于:
function(doc){
emit(doc.timestamp, doc);
}
您真的需要删除文档吗?
如果您确实希望删除超过2天的文档,则可能没有使用couchdb的最佳数据库。Couchbase——据我所知,它在某些方面类似于couchdb和MongoDB都提供文档到期选项
或者,您可以偶尔使用上述映射功能访问文档。但是使用endkey,以便检索所有旧文档。然后您需要逐个删除它们
最终临时视图
我不知道为什么要使用其中一个,只需存储视图即可 您可以使用给定的@dashservice的视图方法,然后发出一个HTTP DELETE/db/docname,或者使用_bulk_docs API端点(如果有很多)
一种常见的couchdb设计模式是将文档存储到单独的数据库中,当不需要这些文档时,可以随后删除这些文档 有趣而清晰的答案,谢谢。我真的不需要经常删除文档,我可能需要每年删除一次或两次,以删除旧文档(大多数情况下都超过一天)。最好不要
发出(…,doc)
——这会将文档的完整副本嵌入到视图中,在大多数情况下,查询性能不需要这样做,此外,它还复制了数据库本身已有的功能。一个简单的emit(doc.timestamp)
就足够了。