如何在mongodb中存储和查询每日服务器使用情况数据

时间:2018-01-23 18:40:03

标签: mongodb mongodb-query

我想从mongodb中的服务器存储每日cpu和磁盘统计信息,稍后查询它们进行分析,我想知道如何存储和查询数据。

我尝试了以下结构,但在存储后我无法查询特定日期/日期范围的数据。

    > 
    > db.customer2.find()
    { "_id" : ObjectId("5a677a69b427f6a736044894"), "server" : "s1", "cpuload" : { "2017-11-04T00:00:00Z" : 50,"2017-11-04T00:00:00Z" : 60 }, "disk_usage" : { "2017-11-04T00:00:00Z" : 90, "2017-11-05T00:00:00Z" : 90} }
    { "_id" : ObjectId("5a677a69b427f6a736044894"),  "server" : "s2", "cpuload" : { "2017-11-04T00:00:00Z" : 50,"2017-11-04T00:00:00Z" : 60 }, "disk_usage" : { "2017-11-04T00:00:00Z" : 90, "2017-11-05T00:00:00Z" : 90} }
    > 
    > db.stats2.find({"disk_usage":"2017-11-04T00:00:00Z"})
    >

1 个答案:

答案 0 :(得分:0)

将数据结构从键控名称值对更改为嵌入文档数组。

using (MemoryStream stream = new MemoryStream(buffer))
{
    Image image = Image.FromStream(stream, true, true);
    image.Save("C:\\Test.jpg", ImageFormat.Jpeg);
}

您可以使用dot notation在日期字段上应用条件,当“disk_usage”数组中存在匹配的日期条目时,该条件将返回文档。

"disk_usage":[
       {"date":ISODate("2017-11-04T00:00:00Z"),"value":60}, 
       {"date":ISODate("2017-11-05T00:00:00Z"),"value":90}
]

您必须使用$投影返回“disk_usage”中匹配的日期元素。

db.col.find({"disk_usage.date":ISODate("2017-11-04T00:00:00Z")})