将数据从 mongodb 解析为 javascript 数组对象 [重复]

Posted

技术标签:

【中文标题】将数据从 mongodb 解析为 javascript 数组对象 [重复]【英文标题】:Parsing data from mongodb to javascript array object [duplicate] 【发布时间】:2016-08-17 13:01:36 【问题描述】:

您好,我正在学习 mongodb 和 nodejs。我成功检索了订单的所有集合。下面是输出

The orders:  __v: 0,
  nonmeat: 'pineapple',
  meat: 'Bacon',
  sauce: 'AlfredoSauce',
  crust: 'medium',
  _id: 571c1b9aed52d5e5462b99f9 , __v: 0,
  nonmeat: 'pineapple',
  meat: 'Bacon',
  sauce: 'AlfredoSauce',
  crust: 'medium',
  _id: 571c1bba07f035e646d24aa8 , __v: 0,
  nonmeat: 'parmesan,olives',
  meat: 'Salami',
  sauce: 'MarinaraSauce',
  crust: 'large',
  _id: 571c1e3c28dd30ed469eb6df , __v: 0,
  nonmeat: 'parmesan,olives',
  meat: 'Salami',
  sauce: 'MarinaraSauce',
  crust: 'large',
  _id: 571c1f11ba02d9f646f4c5c0 

但我想将其转换为 javascript 数组,因为该集合返回一个对象数组。我想过滤掉__v_id。我打算用这个结果显示在谷歌饼图上。我只想要关键项目:nonmeatmeatsaucecrust。我打算在谷歌饼图上显示一定百分比的项目。

以下是我从 mongodb 检索数据的代码:

app.get('/orders', function(req, res)

    var allorders = [];
    //get all orders
    PizzaOrder.find(, function(err, orders)

        if(err) throw err;

         console.log('The orders '+orders.length);

         //this is wrong
         for(var i=0; i<orders.length;i++) 
            allorders.push(JSON.parse(orders[i]));
         
    );
    console.log('Orders retrieved '+ allorders);

    res.json(allorders);

);

更新!!!!!!!!!

我能够以 json 格式发送它并在浏览器上查看。这是我的代码:

app.get('/orders', function(req, res)
    //get all orders
    PizzaOrder.find(, function(err, orders)

        if(err) throw err;

         console.log('The orders '+orders.length);
         res.send(orders);
    );
);

但我想将其过滤掉 _id:__v:。我正在使用 ajax 调用来接收响应并打算在谷歌饼图上显示。

【问题讨论】:

你使用的是哪个 Mongodb API 我用过 mongoose 和 mongolab 不是副本中公认的答案,而是显示.toObject() 的答案,因为您需要对可以操作的对象执行此操作。但在投影中排除字段也可以。 @BlakesSeven 请你举个例子 @user3497437 请提供预期的输出。 【参考方案1】:

如果您的问题是如何删除 _id 和 __v,只需这样做:

 for(var i=0; i<orders.length;i++) 
    delete orders[i].__v;
    delete orders[i]._id;
    allorders.push(orders[i]);
 

【讨论】:

这在我尝试时不起作用 您知道,当您已经提交了一个“新答案”时,会发出一个很大的警告。你真的应该注意这一点。【参考方案2】:

尝试不使用 JSON.parse

     //try this
     for(var i=0; i<orders.length;i++) 
        allorders.push(orders[i]);
     

【讨论】:

我更新了我的问题。因为我能够发送 json 并在浏览器上查看,但我想过滤掉 _id__v 并使用这些项目在谷歌饼图中显示

以上是关于将数据从 mongodb 解析为 javascript 数组对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Express、Mongodb 和 EJ 显示下拉动态数据

MongoDB入门解析学习记录

我们可以为 postgresql 使用解析服务器吗

mongodb总结:概念解析

为 GraphQL 输出解析自动生成的 typescript-mongodb 类型

MongoDB基础知识