2016-08-03 12 views
1

Ich habe ein Dokument in MongoDB bekommt, das wie folgt aussieht:ein Objekt durch Variable mit Namen Objekt abrufen

[ 
    { 
    _id: 1234.., 
    obj1: { name: "A" }, 
    obj2: { name: "AB" }, 
    obj3: { name: "ABC" }, 
    obj4: { name: "ABCD" }, 
    }, 
    { 
    _id: 5678.., 
    obj1: { name: "B" }, 
    obj2: { name: "BC" }, 
    obj3: { name: "BCD" }, 
    obj4: { name: "BCDE" }, 
    } 
] 

und so weiter. Ich habe eine API, die ich dafür mit einer URL mit einem querystring mit dem benannten Objekt abfrage. die URL könnte so http://api.domain.com?size=obj2

aussehen möglicherweise Jetzt würde Ich mag meine mongodb und Rückkehr nur die Objekte abzufragen, die mit der req.query.size Variablen übereinstimmen, alle meine anderen .find(), die ich je etwas tun haben habe geschrieben, dass ich verweisen könnte aber hier habe ich nur den Objektnamen.

Ist dies machbar oder bin ich gezwungen, so etwas in alle meine Dokumente zu injizieren, nur um .find({ objectName: req.query.size }) tun zu können?

Antwort

0

Vermutung, dass Struktur wie folgt

besser sein wird
{ 
    'obj2' : { name: "AB", objectName: "obj2" }, 
    'obj3' : { name: "ABC", objectName: "obj3" }, 
    'obj4' : { name: "ABCD", objectName: "obj4" } 
} 

Gründe

  1. Sie nicht Index auf Dokumentschlüssel Wert so in der Zukunft schaffen können Sie Problem mit diesem
  2. haben Sie können keine Abfrage nach Dokumenten Schlüssel Wert, nur durch Werte, die auf Schlüssel gespeichert
  3. Mit Struktur wie Sie ha Haben Sie Probleme mit der Leistung
+0

Dies ist, was ich schließlich getan habe. Ich erkannte, dass es viel einfacher war, meine Datenbank einfach mit 'Model.find ({}, req.query.size) abzufragen, und nach anderen und jetzt auch Ihnen würde es mir ein Performance-Problem geben. –