2015-02-08 2 views
0

Я пробовал много комбинаций не получилось, так что вам нужна ваша помощь.Mongoose заполнить конкретный массив экземпляра

Рассмотрим ваши есть схема документа и версии

var VersionSchema = mongoose.createSchema("version", { 
    version: { type: Number}, 
    metadata: { type: Schema.Types.ObjectId, ref: 'Metadata' } 
}); 

var documentSchema = mongoose.createSchema("document", { 
    projectId: { type: Schema.Types.ObjectId}, 
    versions: [VersionSchema], 
    deleted: { type: Boolean, default: false} 
}); 

данные будут выглядеть следующим образом

{ 
    _id: a58107da0dc3da020998787c, 
    projectId: 09434766ab47c29609972596, 
    deleted: false, 
    versions: [ 
     { _id: 9ac67dc1b84df1ff09988ea1, version: 1, Metadata: [Object] }, 
     { _id: 9ac67dc1b84df1ff09988ea2, version: 2, Metadata: [Object] } 
    ] 
} 

Я хочу, чтобы заполнить только последнюю версию document..say версии 2..not все суб версии ..

Я попытался это, но нужна помощь ..

Document.findOne({ projectId: projectId }, function(error, document) { 
    var options = [{ 
     path: 'versions.Metadata, 
     model: Metadata 
      //, 
      //match: { version: 2 } 
    }]; 
    Version.populate(document, options, function(err, doc) { 
     deferred.resolve(doc); 
    }); 
}); 
+0

Возможно, это будет опечатка, но не должна ли она быть «path:» versions.metadata ', '? – JohnnyHK

+0

@JohnnyHK заселение работает уже .. но я хочу только заполнить версию: 2 Метаданные не первой записи .. – procoder

+0

'match' применяется к полям« Метаданные », а не к полям элементов« версий ». – JohnnyHK

ответ

0
Document.findOne({ projectId: projectId }, function(error, document) { 
    var options = [{ 
        path: 'versions.Metadata, 
        model: Metadata 
        }]; 
    var version = document.versions[document.versions.length - 1]; 
    Version.populate(version, options, function(err, updatedVer) { 
     deferred.resolve(updatedVer); 
     }); 
    }); 

 Смежные вопросы

  • Нет связанных вопросов^_^