将 JavaScript 文件中的对象插入到 mongo 中

Inserting an object in a JavaScript file into mongo

本文关键字:插入 mongo 对象 JavaScript 文件      更新时间:2023-09-26

我有一个在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,在这种情况下,我的问题是如何将其转换为可用的格式?

如果你去 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 对象。

你应该使用insertOne而不是inserthttps://docs.mongodb.org/getting-started/node/insert/