从Mongoose结果中选择数组字段

时间:2016-01-08 17:10:52

标签: arrays node.js mongodb mongoose

我有几个字段的文档,包括一系列其他文档。我可以成功查询我的目标文档并获取大多数字段,但由于某种原因我无法获取数组。

以下是我如何查询文档和获取字段的一小部分:

Asset.findOne({
    project: asset.project,
    ip: asset.ip
}, function(err, match) {
    if (err) { return next(err); }
    if (match) {
        console.log(match);
        console.log(match.project);
        console.log(match.traffic);
    });
});

以下是控制台日志的示例:

{ __v: 0,
  project: 'test',
  traffic: 
   [ { rport: 39110,
       protocol: 'tcp',
       destination: '10.0.7.30',
       lport: 50 },
     { rport: 49123, protocol: 'tcp', source: '10.0.7.29', lport: 21 } ],
  mac: 'update',
  ip: '10.0.7.27',
  _id: 568fbd22ca70246a168d45aa }

test

undefined

正如您所看到的,console.log(match)为我们提供了整个文件。此文档有project字段,我可以使用match.project获取该字段。但是match.traffic会返回undefined。如您所见,返回的文档中肯定有一个traffic数组字段。

如何从文档中访问数组?

1 个答案:

答案 0 :(得分:0)

看起来像一些猫鼬问题,其中mongoose返回一个猫鼬对象而不是一个javascript对象。

试试这个。

Model.find(query).lean().exec(callback)

这会将mongoose对象转换为javascript对象,但是你会失去像obj.save()

这样的猫鼬函数