2012-04-02 15 views
2

, was ich will, ist nur die _id und Daten in meta zurückzukehren (nicht mein Feld, aber da Mungo dieses Paradebeispiel hat): mongoose embedd documents docMungo verschachtelt Dokument

so, ich bin nicht auf der Suche für jede _id in insbesondere, ich bin auf der Suche nach Datensätzen mit meta.votes.length> 0 oder meta.fans.length> 0 zur Zeit i tun:

Model.find({}, ['_id','meta'], function (err, data) { callback(null, data); });

i erhalten Aufzeichnungen ohne/data /. Ich denke, eine Alternative, um diese Sätze nicht zu finden, wäre eine Möglichkeit, sie herauszufiltern?

EDIT: Ich habe beschlossen, vorübergehend mein Problem mit:

use : { type: Boolean, default: 1 },

obwohl dies ein Feature sein könnte (zeigen und die Ergebnisse versteckt - alte Daten zum Beispiel), ich tue dies eine nicht berücksichtigen/Lösung /.

Antwort

1

Nun meta.votes und meta.fans sind beide nur Anzahl Objekte, so glaube ich nicht, dass Sie wollen meta.fans.length greifen Sie einfach direkt wie ein int. Diese Abfrage sollte nur die _id und Meta-Informationen für Stimmen> 0

Model.find({ "meta.votes" : { $gt : 0 } }, ['_id','meta']).exec(function(err, data) { 
    callback(null, data); 
}); 

Und diese Abfrage sollte abrufen nur die _id und Meta-Informationen für Fans> 0

Model.find({ "meta.fans" : { $gt : 0 } }, ['_id','meta']).exec(function(err, data) { 
    callback(null, data); 
}); 

und man kann abrufen

Ziehen Sie beide Abfragen so zusammen:

Model.find({ $or : [ { "meta.votes" : { $gt : 0 } }, 
        { "meta.fans" : { $gt : 0 } } ] }, ['_id','meta']).exec(function(err, data) { 
    callback(null, data); 
}); 

Sie sollten sehen, Renditen wie: { _id: 5001b3ce7cf4b534a3000002, meta: { votes: 1, fans: 1 } }

Verwandte Themen