Mongodb:添加没有字段名称的数据?

时间:2016-12-08 03:45:44

标签: javascript html mongodb reactjs meteor

我实际上有两个问题,但它们或多或少都属于同一个想法:

  1. 说我想添加一个'行'在MongoDB中,只需使用"字段"的顺序就可以了吗?
  2. 例如,如果我的收藏品是

    items = {
        { name: "John", age: "28" },
        { name: "Jake", age: "26" }
    }
    

    我希望添加row = [ "Mike", "30" ],我能以某种方式items.insertSpecial(row),所以我不必填写"名称"和"年龄"?

    目前,我正在通过手动遍历数据库字段来构建JSON对象,如下所示:

    insertRow() {
        var items = this.props.data;
        var query = {};
    
        for (var i = 0, len = items.length; i < len; i++) {
            var textInput = "textInput" + i;
            var text = ReactDOM.findDOMNode(this.refs[textInput]).value.trim();
            query[items[i]] = text;
        }
        Meteor.call('items.insertRow', query);
    }
    

    该方法只执行Items.insert(query);,但这看起来非常低效,具体取决于我的数据库有多少字段!

    我知道理论上mongo是非结构化的,因此我无法对结构做出假设......但是没有比使用for创建查询更好的方法吗?

    (另外,如果有人能告诉我一个更好的方法来获取一个表单中输入的输入数组而不使用refs和id会很酷)

    1. 同样,或者相反,如果我想添加一个新的&#34;列&#34;到数据库,比如weight,我是否必须遍历每一行并添加它?
    2. 我知道multi: true是可能的,但是反复添加相同的值,而我想将w = ["200 lb", "234 lb"]添加到字段weight,其中w由一系列投入组成。

      我正在寻找类似的东西:

      Items.update({},
        { $unset: { [column]: w } },
        { multi: true });
      

      将数组w中的所有项按顺序添加到数据库中的所有项。这是否存在或者我是否需要在for循环中执行此操作?...

      目前我正在做

      insertColumn() {
          var items = this.props.data;
          var col = ReactDOM.findDOMNode(this.refs.colName).value.trim();
      
          for (var i = 0, len = items.length; i < len; i++) {
              var textInput = "textInput" + i;
              var text = ReactDOM.findDOMNode(this.refs[textInput]).value.trim();
              Meteor.call('items.insertColumn', col, { "id": items[i].id, "text": text });
          }
      }
      

      Meteor方法是:

      'items.insertColumn'(column, value) {
      check(column, String);
      check(value, Object);
      
      Items.update(value.id, {
        $set: { [column]: [value.text] }
      });
      

      }

      任何方法都可以避免拨打电话并手动播放ID?

      谢谢!

1 个答案:

答案 0 :(得分:1)

  

说我想添加一个&#39;行&#39;在MongoDB中,这是可能的   使用&#34;字段&#34;?

的顺序

不,不可能。一个很好的理由是dict不是有序的,与列表相反。

  

同样地,或相反,如果我想添加一个新的&#34;列&#34;到了   数据库,说重量,我是否必须经历每一行并添加它?

     

将数组w中的所有项顺序添加到   数据库。这是否存在或我是否需要在一个中执行此操作   for循环?...

这种方法不存在,我担心你需要迭代所有文件,并用新值 逐个更新