2016-09-24 65 views
0

我有一個集合示例如下。在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

MongoDB允許你指定一個索引的唯一約束。這些約束可以防止應用程序插入插入字段具有重複值的文檔。

使用下面的代碼,使獨特

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

另請參閱該MongoDB documentation更多的澄清。