我的问题:给我一份超过X时间的文件清单.
如果我创建了一个文档:
db.dates.insert({date: new Date()});
现在我只想在"约会"变成30分钟时找到它:
db.dates.find({ $where: "this.date.getTime() + 30 * 60000 <= new Date()"});
这是有效的,但在Mongo文档中明确指出,对于查询的$,存在显着的性能损失.
因此,问题是,还有更好的方法吗?
==========更新1 ==========
我应该补充一点,我希望这个查询功能"动态地"创建一次查询并使用它来获取有限集合上的可用光标...而且我不确定它是否真的可行.
我会测试并重新发布.
==========更新2 ==========
因此,看起来我的"延迟"队列将不得不在代码中处理,无论是使用轮询还是一些"检查,然后睡眠"算法,因为这似乎是mongo的延迟复制正在进行的操作(来自db.cpp):
if ( replSettings.slavedelay && ( unsigned( time( 0 ) ) < nextOpTime.getSecs() + replSettings.slavedelay ) ) {
assert( justOne );
oplogReader.putBack( op );
_sleepAdviceTime = nextOpTime.getSecs() + replSettings.slavedelay + 1;
dblock lk;
if ( n > 0 ) {
syncedTo = last;
save();
}
log() << "repl: applied " << n << " operations" << …Run Code Online (Sandbox Code Playgroud) mongodb ×1