我是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')
,但我无法理解。
答案 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);
});
我希望它能解决您的问题。