从mongodb-node js创建项目数组

Create array of items from mongodb - node js

本文关键字:项目数 数组 项目 创建 mongodb-node js      更新时间:2023-09-26

我是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_name数组。

所以最后的效果是这样的:

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

知道怎么做吗?我试着使用foreach循环,db.collection('cats'),但是我就是想不通。

这对我很有用: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);
})

您可以使用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)
    }
})
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);
    })

我已经测试了这个代码,并且可以很好地满足您的需求。

   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);
    });

我希望它能解决你的疑问。