2017-09-18 5 views
1

Ich aktualisiere jede Sekunde mehrere hundert Dokumente, indem ich neue Daten in ein Array im Dokument verschiebe. Um das Dokument zu erhalten, dem ich Daten hinzufügen werde, verwende ich die Mungo .find().limit(1) Funktion und gebe das gesamte Dokument zurück. Es funktioniert gut.nur Dokument zurückgeben _id on mongoose .find()

Um bei einigen Speicher- und CPU-Problemen zu helfen habe ich mich gefragt, wie ich find() bekommen konnte, nur die id des Dokuments zurückgeben, damit ich das verwenden kann $ push oder $ setzen neue Daten.

Danke.

+0

Der zweite Parameter der Funktion 'find' ist ein String, der angibt, welche Dokumentfelder ein- oder ausgeschlossen werden sollen. Um nur '_id' einzubeziehen, benutzen Sie' collection.find ({}, '_id') '. – alexmac

Antwort

1

Sie möchten Projection verwenden, um Ihre Abfrage genau zu sagen, was Sie von Ihren Objekten möchten.

_id ist immer enthalten, es sei denn, Sie sagen es nicht.

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

'collection.find ({}, '_id')' ist nicht genug? – alexmac

+0

Vielen Dank! – Manu

+0

@alexmac Ich denke, das funktioniert auch (obwohl der zweite Parameter möglicherweise ein Objekt sein muss), aber ich mag das '.project()', da es expliziter ist. – zero298

Verwandte Themen