0

我们有一百台计算机在运行,每台计算机都会在几分钟内发送一次心跳。我们在 mongodb 数据库中捕获这些心跳。现在我们想检查他们最后一次发回心跳是什么时候。我们有一个解决方案是查询每个节点并取回其最后一次心跳时间。但这将向数据库引入与我们拥有的节点数量相同数量的查询。我们想知道是否有更简单的方法来做到这一点。

更具体地说,我们将来自节点的每个心跳存储在单独的文档中,如下所示

{
    "_id" : ObjectId("51d173adedfce2c67fe04c4a"),
    "nodeId" : 260,
    "heartBeat" : NumberLong(1374778030),
    "status" : "DEPLOYED"
}
4

2 回答 2

2

您可以从ObjectId获取时间。按节点id查询,然后按ObjectId排序,从最新文档的objectId中获取时间戳。这将是您的最后一次 ping 时间。

这里。和这里

于 2013-07-26T05:04:01.940 回答
0

与 Dylan 的评论相同,您可能应该提供更多信息以获得最佳响应。除了他的评论之外,我想到的一个问题是,如果您每次寻找心跳时都进行全面扫描。也就是说,您可能会将文档中的某些节点分组为数组(或基于访问模式创建新集合)并在应用层中进行操作。

于 2013-07-26T01:38:20.923 回答