- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想在我的 Mongo 数据库的 capped
集合(用作日志表)上创建一种“仪表板”。这就是我创建集合的方式:
db.createCollection( "messages", { capped: true, size: 100000 } );
我做了一个 collection.find()
,带有选项 tailable:true
、awaitdata:true
和 numberOfRetries:- 1
(无限重试)。
令我困惑的是,我希望 find().each() 循环等待新数据(消息)...相反(几秒钟后)它出错了(No more documents在尾游标中
... :-()
这是我正在使用的代码:
var mongo = require('mongodb');
mongo.MongoClient.connect('mongodb://127.0.0.1/myDb', function (err, db) {
db.collection('messages', function(err, collection) {
if (err) {
return console.error('error in status collection:', err);
}
collection.find( // open tailable cursor
{},
{ tailable: true, awaitdata: true, numberOfRetries: -1 }
).each(function(err, doc) {
if (err) {
if (err.message === 'No more documents in tailed cursor') {
console.log('finished!');
} else {
console.error('error in messages collection:', err);
}
} else {
if (doc) {
console.log('message:', doc.message);
}
}
})
});
});
我错过了什么?
更新:
直到现在还没有收到任何决定性的答案,我推断 MongoDb 可尾集合
还没有准备好迎接黄金时段... :-((
遗憾地放弃了更经典和更强大的 fs 日志记录解决方案......
最佳答案
您可以设置订阅者功能,使用 tailable find()
订阅新的 MongoDB 文档。 光标作为 node.js stream
。下面证明了这一点:
// subscriber function
var subscribe = function(){
var args = [].slice.call(arguments);
var next = args.pop();
var filter = args.shift() || {};
if('function' !== typeof next) throw('Callback function not defined');
var mongo = require('mongodb');
mongo.MongoClient.connect('mongodb://127.0.0.1/myDb', function(err, db){
db.collection('messages', function(err, collection) {
var seekCursor = collection.find(filter).sort({$natural: -1}).limit(1);
seekCursor.nextObject(function(err, latest) {
if (latest) {
filter._id = { $gt: latest._id }
}
var cursorOptions = {
tailable: true,
awaitdata: true,
numberOfRetries: -1
};
var stream = collection.find(filter, cursorOptions).sort({$natural: -1}).stream();
stream.on('data', next);
});
});
});
};
// subscribe to new messages
subscribe( function(document) {
console.log(document);
});
来源:How to subscribe for new MongoDB documents in Node.js using tailable cursor
关于javascript - Mongodb:如何在上限集合上创建 `tail -f` View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33081812/
我有一个日志文件,想要创建一个网页(可能是Python,但不是严格意义上),该网页的工作方式类似于Unix的“tail -f filename”命令的工作方式(将新的日志行写入文件时显示)。 这样,该
当我为日志文件运行 tail -f 时,logrotate 旋转它但 tail -f 没有停止。它继续在新文件中显示日志。之后我手动尝试; mv my.log my.log.2 touch my.lo
您将如何在 bash 中实现这一点。这是我在面试中被问到的一个问题,我可以想到高级语言的答案,而不是 shell。 据我了解,tail 的真正实现是查找文件末尾,然后向后读取。 最佳答案 主要思想是保
例如: NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"hello: (.*)ABC"
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
为什么我不能tail tail 的结果?我可以调用head在序列 tail返回(和其他变体),但 tail在 tail不起作用(在 2017.10 中): > my $list = ; (a b c
A previous question如何讨论 Haskell 表达式的类型 ap zip tail可以翻译成\x -> zip x (tail x)的类型.这很有启发性,但是那里的问题和答案都没有涉
因为我试图保持容器运行,所以我在 docker compose 文件中将“tail -f/dev/null”指定为 command: version: '2' services: serviceN
以下是为拖尾“n”行文件编写的代码。 import java.io.RandomAccessFile; import java.util.HashMap; import java.util.Map
我有一个递归方案样式结构,我想获得所有子结构的列表,包括完整结构 - 即相当于 tails函数在 List 上执行.我认为可以通过调用 para 来实现这一点。 ,在每一步映射回原始结构,然后分别将原
编辑 这是一个 JSFiddle,其中注释掉了“tail”函数的代码。 Solar System JSFiddle 我有一个我正在研究的物体,它有一个围绕中心质量运行的物体。这非常有效。 我现在正尝试
我想跟踪一个文件,但 tail -f 始终从最后 10 行开始。有没有办法输出整个文件然后遵循? 我的目标是查找日志中出现的所有字符串,例如 tail -f Streaming_log | grep“
我试图在我的循环单向链表中将两端连接在一起。在文件名 file.txt 中,包含 ABCDEFGHIJKLMNOPQRSTUVWXYZ 作为文本,我能够分别打印出头部和尾部 A 和 Z。但是,我希望
我目前遇到命令问题 while sleep 0.3; do echo "1"; done | tail -n +3 | grep --line-buffered "1" 我想要一个看起来像这样的输出:
所以我想稍微了解一下 Linux 脚本,并从书中的一个简单示例开始。在这本书中,作者要我从 snort.conf 中获取“第 6 步:配置输出插件”之前的五行。 类似于作者,我确定了我想要的行的位置,
我想跟踪一个将不间断写入的日志文件,问题是在我的脚本中我不想指定行数或字节数等。要跟踪,我想在我的脚本中指定每次跟踪之前未跟踪的最后一行。我怎样才能在我的脚本中做到这一点?谢谢 最佳答案 我认为 20
Problem: Program to read the lines from infinite stream starting from its end of file. #解决方案: import
我想安装 Linux Tails。我已经将 ppa:tails-team/tails-installer 添加到我的源中,但是当我的 Ubuntu 软件中心尝试下载存储库信息时,我收到此错误: W:F
读取记录时间序列数据的 1 GB 文件并生成包含两列(一列时间,另一列数字)的实时图表的最佳方法是什么?我看到您有不同的方式来调整文件。 最佳答案 对于 RRDTool 来说听起来不错. 但如果您想坚
需要监视日志文件中的特定字符串“Server running at http”。在日志文件中找到该字符串后,我需要停止检查并想继续其余代码。 目前我正在使用 "tail -f my-file.log
我是一名优秀的程序员,十分优秀!