我有一个我在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处理的格式不兼容,在这种情况下我的问题是如何将其转换为可用的格式?
答案 0 :(得分:0)
如果你转到jsonlint.com
你会发现你的对象不是有效的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对象。
答案 1 :(得分:-2)
你应该使用insertOne而不是insert https://docs.mongodb.org/getting-started/node/insert/