2017-07-09 6 views
0

Ich habe ein kleines Problem, das Nachschlagen zu arbeiten. Es gibt ein leeres Array zurück. Ich verwende das contactId-Feld in der Fakturierungssammlung. Und ich benutze den Kontakt _id erstellt, wenn Eintrag in Contact Collection in mongodb (Kann es in Robomongo sehen). Ich habe wenige Billings mit ContactId, die der _id der wenigen Kontakte entsprechen. Ist meine Syntax korrekt? Vermisse ich etwas? Danke für Ihre Hilfe. Unten ist mein Lookup syntaxeMongodb Lookup mit zwei ObjectId

 Contact.aggregate([ 
 
      { 
 
       $lookup: { 
 
        from: "Billing", 
 
        localField: "_id", 
 
        foreignField: "contactId", 
 
        as: "BillingMembership" 
 
       } 
 
      } 
 
     ]).exec(function (err, contacts) { 
 
      if (err) { 
 
       return res.status(500).json({ 
 
        title: 'An error occurred', 
 
        error: err 
 
       }); 
 
      } 
 
      res.status(200).json({ 
 
       message: 'Success', 
 
       obj: contacts 
 
      }); 
 
     });
Im Folgenden ist das Ergebnis ich wieder aus der Datenbank erhalten.

(4) [Object, Object, Object, Object] 
 
0:Object 
 
BillingMembership:Array(0) 
 
length:0 
 
__proto__:Array(0) 
 
additionalInterests:"MFM/REI" 
 
billingEmail:"[email protected]" 
 
cellPhone:6787025500 
 
dateBirth:"1555-02-02T00:00:00.000Z" 
 
firstName:"qtazerqr'efsg" 
 
gogsMbrType:"Resident Applicant" 
 
gogsYearJoined:"20111" 
 
homePhone:6787025500 
 
lastName:"gzaetrsg" 
 
memberSuffix:", DO" 
 
middleName:"fzerqgrre" 
 
notes:"htrfjghdnt" 
 
officeEmail:"[email protected]" 
 
officePhone:6787025500 
 
personalEmail:"[email protected]" 
 
practiceId:"592e4c1638a494089c50c8c8" 
 
praticeType:"MFM/High Risk" 
 
spFirstNm:"gsertdhy" 
 
spLastNm:"rthytrfgj" 
 
spSuffix:"syhtdrh" 
 
website:"trshdty" 
 
__v:0 
 
_id:"5932db29eb4dfe0de4a8a36d" 
 
__proto__:Object 
 
1:Object 
 
2:Object 
 
3:Object

Mongoose Schema Kontakt

var mongoose = require('mongoose'); 
 
var Schema = mongoose.Schema; 
 
var mongooseUniqueValidator = require('mongoose-unique-validator'); 
 

 
var schema = new Schema({ 
 
    firstName: {type: String, required: true}, 
 
    middleName: {type: String, required: true}, 
 
    lastName: {type: String, required: true}, 
 
    dateBirth: {type: Date, required: true}, 
 
    memberSuffix: {type: String, required: true}, 
 
    officePhone: {type: Number, required: true}, 
 
    homePhone: {type: Number, required: true}, 
 
    cellPhone: {type: Number, required: true}, 
 
    officeEmail: {type: String, required: true}, 
 
    billingEmail: {type: String, required: true}, 
 
    personalEmail: {type: String, required: true}, 
 
    gogsMbrType: {type: String, required: true}, 
 
    gogsYearJoined: {type: String, required: true}, 
 
    spFirstNm: {type: String, required: true}, 
 
    spLastNm: {type: String, required: true}, 
 
    spSuffix: {type: String, required: true}, 
 
    notes: {type: String, required: true}, 
 
    praticeType: {type: String, required: true}, 
 
    additionalInterests: {type: String, required: true}, 
 
    website: {type: String, required: true}, 
 
    practiceId: {type: Schema.Types.ObjectId, ref: 'Practice'} 
 
}); 
 

 
schema.plugin(mongooseUniqueValidator); 
 

 
module.exports = mongoose.model('Contact', schema);

Mongoose Schema Billing

var mongoose = require('mongoose'); 
 
var Schema = mongoose.Schema; 
 
var mongooseUniqueValidator = require('mongoose-unique-validator'); 
 

 
var schema = new Schema({ 
 
    reason: {type: String, required: true}, 
 
    amount: {type: Number, required: true}, 
 
    membership: {type: String, required: true}, 
 
    membershipYear: {type: Schema.Types.ObjectId, ref: 'Membership'}, 
 
    type: {type: String, required: true}, 
 
    date: {type: String, required: true}, 
 
    contactId: {type: Schema.Types.ObjectId, ref: 'Contact'}, 
 
    conferenceId: {type: Schema.Types.ObjectId, ref: 'Conference'} 
 
}); 
 

 
schema.plugin(mongooseUniqueValidator); 
 

 
module.exports = mongoose.model('Billing', schema);

+1

Ändern Sie Ihre 'aus: "Abrechnung"' auf 'aus: Name des collection' (wahrscheinlich' billings') – Veeram

+0

Dank Sie Veeram, Es klappt !! das ist so komisch, ich exportiere mein Modell als "Billing"! Warum musste ich "Billings" verwenden? Danke vielmals !!!! – Pfeiff86

+1

Gern geschehen. $ lookup wird auf Serverseite aufgelöst. Es erfordert also den Sammlungsnamen als Gegenstück zum Mungo-Modell. – Veeram

Antwort

0

gelöst. Danke an Veeram.

I verwendet Ändern Sie Ihre Aktivitäten von: "Abrechnung" zu Aktivitäten von: "billings"

Verwandte Themen