2016-05-04 7 views
2

Ich bin neu in MongoDB. Ich habe eine App mit einer Folge entworfen/folgenden wie Twitter StilJoins in MongoDB

Mein Schema ist als

UserSchema folgt:

username:'Alex', 
    pass:'salted', 
    likes:'200' 

FollowSchema

uid : { 
     type: Schema.ObjectId, 
     ref: 'User' 
    }, 
    fid : { 
     type: Schema.ObjectId, 
     ref: 'User' 
    } 

Zunächst einmal ist dies ein skalierbares Design?

Wenn ja, möchte ich alle Benutzer außer eingeloggten Benutzer erhalten und feststellen, ob jeder Benutzer den angemeldeten Benutzer verfolgt oder nicht.

Ich denke an Aggregation oder mapreduce aber nicht sicher, wie Sie sich nähern. Jede Hilfe wird geschätzt.

Thx

Antwort

1

In mongodb gibt es keine Join-Operation. In Mungo können Sie populate() verwenden.

http://mongoosejs.com/docs/populate.html

Follow.find({}).populate('uid').populate('fid').exec(function (e, d) { 
    if(e){ 
     res.json(e); 
    } 
    else { 
     res.json(d); 
    } 
}); 
+0

Dank ... Aber wie bekomme ich alle Benutzer zuerst und dann finden, wenn ein bestimmter Benutzer die in users.As pro Code angemeldet folgt, es sei denn, der Benutzer in der Folge ist Dokument, ich würde die Benutzerdetails in den Ergebnissen nicht erhalten. –