2015-02-08 86 views
0

我試了很多組合沒有工作,所以需要你的幫助。貓鼬填充特定的陣列實例

考慮你有一個文檔的架構和版本

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

可能只是一個錯字,但不應該是'路徑:'versions.metadata','? – JohnnyHK 2015-02-08 01:53:31

+0

@JohnnyHK填充作品已經..但我只想填充版本:2元數據不是第一個記錄.. – procoder 2015-02-08 07:53:01

+0

'match'應用於'Metadata'字段,而不是'versions'元素的字段。 – JohnnyHK 2015-02-08 15:15:05

回答

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); 
     }); 
    });