2016-07-27 46 views
0

的数据的有限量的我有文档的文档data(含有读数),用于我的集合中的每个文件:MongoDB的:保持排序后的数组

{ 
    "_id": ..., 
    "data": { 
     "2016-07-24": {"reading1": 1}, 
     "2016-07-25": {"reading1": 2}, 
     "2016-07-26": {"reading1": 3} 
    } 
} 

数据与相同的格式定期加入。

密钥必须是唯一的,因为新的数据将替换旧数据(例如,"2016-07-25": {"reading1": 9}将取代上面列出的值)

如何只保留最近的10个条目(当键排序)?我可以用mongo查询来做到这一点,还是应该使用应用程序端逻辑?

data转成数组可能有效,但存在具有重复日期条目的问题。

感谢您的帮助!

回答

1

$slice数组更新操作符完全符合您的要求。查看文档页面上的examples

+0

看起来不错。如果我这样做,我认为使用'upsert'来更新数据元素是正确的方法吗? – humanoid

+0

应该工作,假设upsert语义是你需要的。 – helmy

+0

helmy:问题是我需要基于日期的数组元素是唯一的。 mongo似乎不允许我说“更新字段Y是baz的数组元素的字段X”,这正是我想要的。 – humanoid