Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用meteor向mongodb插入对象数组?_Mongodb_Meteor - Fatal编程技术网

如何使用meteor向mongodb插入对象数组?

如何使用meteor向mongodb插入对象数组?,mongodb,meteor,Mongodb,Meteor,在尝试插入对象数组时,如何在不添加无关字符的情况下获得干净的插入。如果我从mongodb shell手动执行插入,我会得到预期的结果,否则它似乎不起作用 我试图实现的是mongodb shell的结果: db.test.insert([{name:"john"},{name:"jane"}]); 这将产生: db.test.find() { "_id" : ObjectId("53bb0768dc2469c1f440a3c2"), "name" : "john" } { "_id" : Obj

在尝试插入对象数组时,如何在不添加无关字符的情况下获得干净的插入。如果我从mongodb shell手动执行插入,我会得到预期的结果,否则它似乎不起作用

我试图实现的是mongodb shell的结果:

db.test.insert([{name:"john"},{name:"jane"}]);
这将产生:

db.test.find()
{ "_id" : ObjectId("53bb0768dc2469c1f440a3c2"), "name" : "john" }
{ "_id" : ObjectId("53bb0768dc2469c1f440a3c3"), "name" : "jane" }
但我不明白,所以我使用下面的代码片段测试了几种插入对象数组的方法,希望找到正确的组合:

test = new Meteor.Collection("test");
a = new Array();
a.push({name:"john"});
a.push({name:"jane"});
console.log(a);
test.insert(a);  
console.log(a.toString());
test.insert(a.toString());  
console.log(JSON.stringify(a));
test.insert(JSON.stringify(a));
test.insert([{name:"john"},{name:"jane"}]);
test.insert([{"name":"john"},{"name":"jane"}]);
我在控制台中得到的是:

[ { name: 'john' }, { name: 'jane' } ]
[object Object],[object Object]
[{"name":"john"},{"name":"jane"}]
我在数据库中得到的信息: db.test.find()


我期望一个简单的“test.insert(a)”来满足我的需求,但它包含数组索引。在没有数组索引的情况下,如何从meteor构建一个对象数组插入mongodb?Stringify似乎构建了一个外观整洁的数组序列化,但显然我不知道怎么做?这样做的目的是,我可以在内存中构建一个复杂的对象数组并进行批量插入。

Meteor只允许您将根级别的文档存储为对象,如果您给它一个数组,它将尝试将其转换为对象。这就是为什么你会得到这个奇怪的结果。您必须调整文档以将数组存储为根文档的一部分

test = new Meteor.Collection("test");
a = new Array();
a.push({name:"john"});
a.push({name:"jane"});

var doc = {
    names: a
}

test.insert(a);

无法将文档存储为[]。

我不确定是否理解。如果我这样做:db.test.insert([{name:john},{name:jane}]);这与我在代码中所做的完全相同,它是从shell工作的,而不是从代码工作的?我的理解是,大容量插入允许[]。这不是批量插入工作的要求吗?哦,我明白你想做什么了。不幸的是,meteor还不能像mongo doesWell那样支持批量插入,这真是一个麻烦。看起来我找到了一个类似的问题,但不是一个好问题。看起来它离实施如此之近,我想知道阻碍是什么@sday的问题是检查客户端是否允许/拒绝每一个,您必须检查每一个,因此批量插入没有真正的意义。在服务器端,您可以使用meteor expose之类的工具来访问mongodb方法,直接执行大容量插入。
Template.first.rendered=function(){
    var a=[];
    a.push({name:"rahul"});
    a.push({name:"vidu"});
    Meteor.call("array", a , function(error,result){
    });
};
Template.first.rendered=function(){
    var a=[];
    a.push({name:"rahul"});
    a.push({name:"vidu"});
    Meteor.call("array", a , function(error,result){
    });
};