2017-01-05 6 views
0

Ich habe dieses HomeSchemaSuche die ids eines Arrays in MongoDB

Schema = mongoose.Schema; 


homeSchema = new Schema({ 
    name: { type: String, required: true}, 
    administrator: {type : mongoose.Schema.Types.ObjectId, ref: 'User', required: true}, 


users: [{ type : mongoose.Schema.Types.ObjectId, ref: 'User' }], 
}); 

module.exports = mongoose.model('Home', homeSchema); 

ich abfragen möchten, ob ein bestimmter Benutzer in diesem Array Benutzer auf user._id basiert? Ich weiß, das ist ziemlich einfach, aber wie mache ich das? Muss ich $ elematch verwenden?

+2

Mögliche Betrogene von https://stackoverflow.com/questions/18148166/find-document-with-array-that-contains-a-specific-value – JohnnyHK

+0

Ich würde behaupten, gegen diese @JohnnyHK. Ich habe dieses Benutzer: Array von ObjectId und daher glaube ich, es ist nicht wie nach Strings suchen? – TradeRaider

+0

Der Ansatz ist der gleiche, ob es ein Array von Strings oder ObjectIds ist. In diesem Fall wäre es '{users: user._id}', um Home-Dokumente zu finden, in denen 'Benutzer'' user._id' enthalten. – JohnnyHK

Antwort

0

Sie können dafür $ in verwenden. Diese Abfrage sucht nach userId (dies sollte ein Array sein), die in Ihrem Benutzer-Array in Ihrer Sammlung vorhanden sind. Wenn Sie einige Details der Benutzer möchten, können Sie für das ausfüllen.

var query = {users : {$in:userId} } 
Verwandte Themen