这两天在想一个问题,因为mongdb批量插入数据的效率是非常高的,但是mongoose里能不能不要先全部遍历一次,存入到建好对象比如一个数组中,在用save保存呢,感觉多此一举啊。
var Schema =mongoose.Schema;
//创建一个类
var PilotSchema = new Schema({
name:{type:String, index:true},
groups:String
});
//把类映射到db中(a,b)a:db中的文档(表)名,b:类
db.model('Pilot',PilotSchema);
var Pilot=db.model('Pilot');
//构造函数,初始化类
function Pilots(JsonObj){
this.name=JsonObj.name;
this.groups=JsonObj.groups;
}
exports.pilotSave=function(pilots,callback){
var newpilot=new Pilot();
newpilot.name=pilots.name; ------假如pilots是一组对象的话,我就得用循环放进newpilot了
newpilot.groups=pilots.groups;
newpilot.save(function(err){
if(err){
console.log(err);
return callback(err);
}
callback(null);
})
}
可不可以直接 var newpilot =pilots
?
这两天在mongoosejs.com的api文档中找,没找见,如果你知道请指导一下咯,或者有别的包告诉我一下也行
当我看见这个问题的时候,我几乎感觉您对mongoose有太多的不熟悉,虽然你尝试去找api,但是该框架的主要组成部分都不太了解,势必会导致你无法定位到你想要的结果。 例如你了解了Schema/Model/Document之间的区别后,就很容易发现你的示例代码中你想通过Dcoument来进行操作。对于Doc的操作当然是单对象操作咯,如果你想一次性操作多个,那么肯定是要找Documents或者DocumentArray对象咯。然后我们是可以找到DocumentArray的,也就找到了create方法,create方法告诉我们,里面的subDoc依然按照他原有的schema定义来构造。那么schema构造出的是什么呢?当然是model咯,因此我们就要去model里找create方法咯。model的create方法案例中不就清晰的写了2个操作数组的案例么?
//Model.create(doc, fn)
//Shortcut for creating a new Document that is automatically saved to the db if valid.
//show code
//Parameters:
// doc <Array, Object...>
// fn <Function> callback
Candy.create({ type: 'jelly bean' }, { type: 'snickers' }, function (err, jellybean, snickers) {
if (err) // ...
});
var array = [{ type: 'jelly bean' }, { type: 'snickers' }];
Candy.create(array, function (err, jellybean, snickers) {
if (err) // ...
});
强烈收藏,a272121742
,你说的很对,我最然有看api,但是整个了解不到2周时间话说文档太多了也不知道从何入手,非常感谢你的回复啊,这样我与多了些思路了。还有你是深夜给我留言的吗????非常感动哇,哈哈
@455024780 我是晚上12点后开始研究,白天1点起床,起床之后工作的人。你去看我写的一篇关于mongoose基础引导的文章http://club.cnodejs.net/topic/504b4924e2b84515770103dd。