将JavaScript文件中的对象插入mongo

将JavaScript文件中的对象插入mongo,javascript,json,node.js,mongodb,Javascript,Json,Node.js,Mongodb,我在一个JavaScript文件中创建了一个对象,基本上如下所示 { name1: {'category 1' : {'stat1': 1, 'stat 2': 1}, 'category 2' : {'stat1': 1, 'stat 2': 1}}, name2...} 我想把这个对象插入mongo中的数据库。我得到的错误是 Error: invalid schema, expected mongodb 在我的代码中指向这一行 MongoClient.con

我在一个JavaScript文件中创建了一个对象,基本上如下所示

{ name1:
     {'category 1'  : {'stat1': 1, 'stat 2': 1},
      'category 2'  : {'stat1': 1, 'stat 2': 1}},
  name2...}
我想把这个对象插入mongo中的数据库。我得到的错误是

Error: invalid schema, expected mongodb
在我的代码中指向这一行

MongoClient.connect(url, function (err, db){
    if (err)...
    else{
        var collection = db.collection("mydb");
        //this function is giving an error
        collection.insert(myObj, function(err, result) {
        if(err){console.log(err);}
        else...

我怀疑这可能是因为我的对象的格式不兼容,mongo无法处理,在这种情况下,我的问题是如何将其转换为可用格式?

您应该使用insertOne而不是insert 如果你去

您会发现您的对象不是有效的JSON对象

要创建有效的JSON对象,可以执行以下操作:

var myObj = {};
myObj.name1 = {};
myObj.name1.category1 = {};
myObj.name1.category1.stat1 = 1;
myObj.name1.category1.stat2 = 1;
myObj.name1.category2 = {};
myObj.name1.category2.stat1 = 1;
myObj.name1.category2.stat2 = 1;
理想情况下,name1对象应该是一个数组,该数组应该包含category1和category2对象作为数组的元素。此外,myObj还应该是一个数组,它应该包含name1和name2对象作为元素。然后可以使用MongoDB的insertMany函数插入数组

假设数组为:

var myObjs = [];
var obj1 = {};
obj1.name1 = {};
obj1.name1.category1 = {};
obj1.name1.category1.stat1 = 1;
obj1.name1.category1.stat2 = 1;
obj1.name1.category2 = {};
obj1.name1.category2.stat1 = 1;
obj1.name1.category2.stat2 = 1;
myObjs.push(obj1);
collection.insertMany(myObjs, function(err, result){
    if(err) console.log(err);
    else console.log('Documents inserted successfully');
});
在插入之前,请始终确保您的对象是有效的JSON对象