从mongodb创建项目数组 - 节点js

时间:2016-08-17 12:53:09

标签: javascript arrays node.js mongodb

我是mongodb和node js的新手,所以如果这很简单,请原谅。所以我有一个架构:

var mongoose = require('mongoose');

var CatSchema = new mongoose.Schema({
  cat_name: String,
  cat_value: Number
});

module.exports = mongoose.model('Cat', CatSchema);

当我向dbs添加数据时,它看起来像这样:

> db.cats.find()
{ "_id" : ObjectId("..."), "cat_name" : "test1", "__v" : 0, "cat_value" : 55 }
{ "_id" : ObjectId("..."), "cat_name" : "test2", "cat_value" : 24, "__v" : 0 }
{ "_id" : ObjectId("..."), "cat_name" : "test1", "__v" : 0, "cat_value" : 70 }

我想调用dbs并为集合中的每个文档创建一个cat_names数组。

所以最后的效果看起来像这样:

var cat_names = [test1, test2, test1 ... ]

知道怎么做吗?我尝试使用foreach循环db.collection('cats'),但我无法理解。

4 个答案:

答案 0 :(得分:1)

您可以使用exec,这将允许您返回您检索到的JSON文档的数组。

db.cats.find(function(err, cats){
    var arr_docs = cats.map(function(cat) { return cat.cat_name});
    if(err){
       res.json(err)
    } else {
       res.json(arr_docs)
    }
})

答案 1 :(得分:1)

这对我有用: var cat_names = [];

Cat.find(function(err, data){
    if(err){            
        console.log(err);
    }
    var stringify = JSON.stringify(data)
    content = JSON.parse(stringify);

    content.forEach(function(result){
        cat_names.push(result.cat_name);
    })

    console.log(cat_names);
})

答案 2 :(得分:0)

var cat_names = [];

    db.cats.find(function(err, data){
        if(err){            
            console.log(err);
        }

        data.forEach(function(result){
            cat_names.push(result.cat_name);
        })

        console.log(cat_names);
    })

我已经测试了这段代码,并且可以满足您的要求。

答案 3 :(得分:0)

   Cat
  .find()
  .then(function(cat){
   var cat_Names_Array = [];
    cat.map(function(value){
      cat_Names_Array.push(value.cat_name);
    });

    return cat_Names_Array;  
    })
     .catch(function(err){
      console.log('err in finding:',err);
    });

我希望它能解决您的问题。