2017-09-18 72 views
1

我通過將新數據推送到文檔中的數組來每秒更新100個文檔。爲了獲得我要添加數據的文檔,我使用了貓鼬.find().limit(1)函數,並返回整個文檔。它工作正常。只返回文件_id在貓鼬上.find()

爲了解決一些內存和CPU問題,我想知道如何才能得到find()只返回文檔的id,所以我可以用它來$ push或$ set新數據。

謝謝。

+0

find函數的第二個參數是一個字符串,用於指定要包含或排除的文檔字段。要僅包含'_id',請使用'collection.find({},'_id')'。 – alexmac

回答

1

你想使用Projection告訴你的查詢到底你想要什麼你的對象。

_id總是包含在內,除非你不告訴它。

readings = await collection 
.find({ 
    name: "Some name you want" 
}) 
.project({ 
    _id: 1 // By default 
}) 
.toArray(); 
+1

'collection.find({},'_id')'是不夠的? – alexmac

+0

非常感謝! – Manu

+0

@alexmac我認爲它也可以工作(儘管第二個參數可能需要是一個對象),但是我更喜歡'.project()',因爲它更加明確。 – zero298