【问题标题】:Selecting array fields from Mongoose results从 Mongoose 结果中选择数组字段
【发布时间】:2016-04-13 10:54:22
【问题描述】:

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

下面是我如何查询文档和获取字段的一些小插曲:

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数组字段。

如何从我的文档中访问数组?

【问题讨论】:

    标签: arrays node.js mongodb mongoose


    【解决方案1】:

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

    试试这个。

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

    这会将 mongoose 对象转换为 javascript 对象,但您会丢失像 obj.save() 这样的 mongoose 函数

    【讨论】:

      猜你喜欢
      • 2021-08-16
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多