Mongo查询返回每个节点的上次更新时间

时间:2013-07-26 00:19:34

标签: mongodb

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

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

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

2 个答案:

答案 0 :(得分:2)

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

Here。和Here

答案 1 :(得分:0)

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