如何通过仅保留更改点来减少收集?

时间:2016-09-24 15:45:00

标签: node.js mongodb nedb

我在下面有一个收集示例。在cron作业上每20分钟从端点提取此数据。

{"id":AFFD6,"empty":8,"capacity":15,"ready":6,"t":1474370406,"_id":"kROabyTIQ5eNoIf1"}
    {"id":AFFD6,"empty":9,"capacity":15,"ready":5,"t":1474116005,"_id":"kX0DpoZ5fkMr2ezg"}
    {"id":AFFD6,"empty":9,"capacity":15,"ready":5,"t":1474684808,"_id":"ken1WRN47PTW159H"}
    {"id":AFFD6,"empty":9,"capacity":15,"ready":5,"t":1474117205,"_id":"kes1gDlG1sBjgV1R"}
    {"id":AFFD6,"empty":10,"capacity":15,"ready":4,"t":1474264806,"_id":"khILUjzGEPOn0c2P"}
    {"id":AFFD6,"empty":9,"capacity":15,"ready":5,"t":1474275606,"_id":"ko9r8u860es7E2hI"}
    {"id":AFFD6,"empty":9,"capacity":15,"ready":5,"t":1474591207,"_id":"kpLS6mCtkIiffTrN"}

我想丢弃任何未在empty(以及ready)中显示更改的文档(行)。我的目标是找到这个值在此集合中更改的最新时间戳。

更好地说明,我想将其减少到值变化的地方:

{"id":AFFD6,"empty":8,"capacity":15,"ready":6,"t":1474370406,"_id":"kROabyTIQ5eNoIf1"}
{"id":AFFD6,"empty":9,"capacity":15,"ready":5,"t":1474117205,"_id":"kes1gDlG1sBjgV1R"}
{"id":AFFD6,"empty":10,"capacity":15,"ready":4,"t":1474264806,"_id":"khILUjzGEPOn0c2P"}
{"id":AFFD6,"empty":9,"capacity":15,"ready":5,"t":1474591207,"_id":"kpLS6mCtkIiffTrN"}

我可以在MongoDB查询中执行此操作吗?或者我最好使用JavaScript过滤功能?

1 个答案:

答案 0 :(得分:1)

MongoDB允许您为索引指定唯一约束。这些约束阻止应用程序插入具有插入字段重复值的文档。

使用以下代码制作唯一

db.collection.createIndex( { "id": 1 }, { unique: true } )

另请参阅MongoDB documentation以获得更多说明。