我有几个字段的文档,包括一系列其他文档。我可以成功查询我的目标文档并获取大多数字段,但由于某种原因我无法获取数组。
以下是我如何查询文档和获取字段的一小部分:
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
数组字段。
如何从文档中访问数组?
答案 0 :(得分:0)
看起来像一些猫鼬问题,其中mongoose返回一个猫鼬对象而不是一个javascript对象。
试试这个。
Model.find(query).lean().exec(callback)
这会将mongoose对象转换为javascript对象,但是你会失去像obj.save()