【问题标题】:Inserting an object in a JavaScript file into mongo将 JavaScript 文件中的对象插入 mongo
【发布时间】:2016-02-17 17:48:57
【问题描述】:

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

【问题讨论】:

    标签: javascript json node.js mongodb


    【解决方案1】:

    如果您前往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 对象。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-20
        • 1970-01-01
        • 2017-06-27
        • 2019-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-29
        相关资源
        最近更新 更多