2017-09-08 2 views
2

Ich habe einige Dokumente beliebigen Wert entsprechen:MongoDB: Abfrage-Ergebnis in Array

{ 

    "storeID" : "715R", 
    "sensorID" : [ 
     "0BBA", 
     "0BB9" 
    ] 
} 
{ 

    "storeID" : "312R", 
    "sensorID" : [ 
     "0BBB" 
    ] 
} 

Ich möchte storeIDarray wie ['715R','312R','789R']

in diesem Fall ich irgendein Wert Ergebnis sensorID die sotreID Spiel erhalten möchten Ergebnis: a sensorID Array: [ "0BBA", "0BB9","0BBB"]

was soll ich tun? Vielen Dank.

+0

[ '$ in'] (https: // docs .mongodb.com/manual/reference/operator/query/in /) und dann entweder eine Projektion oder ['Array.prototype.map'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referenz/Global_Objects/Array/map) – str

+1

Was hast du bisher versucht? Das Behandeln von Peers als Codierungsdienst wird im Allgemeinen nicht allzu gut durchgeführt. Vielleicht möchten Sie lesen [Wie stelle ich eine gute Frage] (http://stackoverflow.com/help/how-to-ask), was die Wahrscheinlichkeit erhöht, eine nützliche Antwort _drastically_ zu erhalten. Sie finden [ESR] (https://en.m.wikipedia.org/wiki/Eric_S._Raymond) 's exzellenten Essay [Fragen an den Smart Way] (http://catb.org/~esr/ faqs/smart-questions.html) hilfreich. –

+0

In einem Dokument, dessen Geschäfts-ID mit dem Wert übereinstimmt, den wir als Antwort übergeben, möchten Sie Sensor-IDs dieser Geschäfts-ID. –

Antwort

1

Sie sollten sich den Operator $in in MongoDB ansehen. Verwenden Sie es mit einem suchen, dann, um Ihre Anfrage schneller zu machen, können Sie die lean Methode verwenden: damit wird MongoDB JS-Objekte und nicht Mongoose Modell/Objekte zurückgeben.

YourModel.find({storeID: {$in: storeIDarray }}).lean().exec(yourCallback); 

Dann können Sie die reduce Methode auf der resultierende Array verwenden:

yourResult.reduce((acc, el) => acc.concat(el.sensorID), []); 

Hoffe, dass es hilft,
Mit freundlichen Grüßen