【发布时间】:2015-04-08 00:01:42
【问题描述】:
我尝试了很多组合都没有成功,所以需要你的帮助。
考虑你有一个文档架构和版本
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] }
]
}
我只想填充最新版本的文档..说版本 2..不是所有子版本..
我试过了,但需要帮助..
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);
});
});
【问题讨论】:
-
可能只是一个错字,但不应该是
path: 'versions.metadata',吗? -
@JohnnyHK 填充工作已经..但我只想填充版本:2 元数据不是第一个记录..
-
match应用于Metadata字段,而不是versions元素的字段。 -
@johnnyHK 是否有可能在版本中只填充一个元素??
-
@johnnyHK 我做到了,它有效..:)
标签: node.js mongodb mongoose mongodb-query mongoose-populate