Mungo finden Sie ein Dokument mit der Referenz-Eigenschaft

Habe ich ein erstes Modell Person:

var personSchema    = new Schema({
    firstname: String,
    name: String
});
module.exports = mongoose.model('Person', personSchema);

Und eine zweite Modell-Paar:

var coupleSchema    = new Schema({
    person1: [{ type: Schema.Types.ObjectId, ref: 'Person' }],
    person2: [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});
module.exports = mongoose.model('Couple', coupleSchema);

Finde ich ein paar mit einer person ObjectId:

    Couple.find({
        'person1': req.params.objectid
    })
    .populate({
        path: 'person1 person2'
    })
    .exec(function (err, couple) {
        if (err)
            res.send(err);
        res.json(couple)
    });

Aber ich würde gerne einen paar zu finden, indem Sie einen Vornamen und nicht um eine ObjectId einer Person, so etwas wie, dass:

    Couple.find({
        'person1.firstname': "Bob"
    })
    .populate({
        path: 'person1 person2'
    })
    .exec(function (err, couple) {
        if (err)
            res.send(err);
        res.json(couple)
    });

Aber es ist immer leer...

Sowieso um dieses Problem zu lösen?

Danke für jedes feedback.

BEARBEITEN

Ich nur implementiert, die Antwort:

Lassen sehen mein Paar nun das Modell:

var Person      = require('mongoose').model('Person');
var coupleSchema    = new Schema({
    person1 : [{ type: Schema.Types.ObjectId, ref: 'Person' }],
    person2 : [{ type: Schema.Types.ObjectId, ref: 'Person' }]
});

coupleSchema.statics.findByUsername = function (username, callback) {
  var query = this.findOne()

  Person.findOne({'firstname': username}, function (error, person) {
    query.where(
      {person1: person._id}
    ).exec(callback);
  })
  return query
}

module.exports = mongoose.model('Couple', coupleSchema);

Mit dieser Verwendung:

Couple.findByUsername(req.params.username, function (err, couple) {
        if(err)
            res.send(err);
        res.json(couple);
    });

Funktioniert! Danke für deine Antwort und Bearbeitungen.

InformationsquelleAutor Thomi | 2016-03-24
Schreibe einen Kommentar