【问题标题】:Mongoose populate specific array instanceMongoose 填充特定的数组实例
【发布时间】: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


【解决方案1】:
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);
        });
  });

【讨论】:

    猜你喜欢
    • 2019-01-31
    • 2014-12-05
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 2020-06-07
    • 2015-03-26
    相关资源
    最近更新 更多