Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB灵活的数据结构_Mongodb_Schema_Nosql - Fatal编程技术网

MongoDB灵活的数据结构

MongoDB灵活的数据结构,mongodb,schema,nosql,Mongodb,Schema,Nosql,我刚刚开始学习Mongo DB 我在当前项目中选择它是因为我需要一个基于用户输入的相当灵活的模式 在mySql中,我有一个表来存储用户输入的数据 ID Key Value -------------------------- 1 Color Black 2 Color White 3 Lace_length 12 我认为这是存储用户输入的数据的典型方式,这些数据可能是任何东西 我的问题是,在MongoDB

我刚刚开始学习Mongo DB

我在当前项目中选择它是因为我需要一个基于用户输入的相当灵活的模式

在mySql中,我有一个表来存储用户输入的数据

ID      Key         Value
--------------------------
1      Color        Black
2      Color        White
3      Lace_length   12 
我认为这是存储用户输入的数据的典型方式,这些数据可能是任何东西

我的问题是,在MongoDB中表示这一点的最佳方式是什么

我的想法是这样的

{ _id: ObjectId{} ,
   options: [
         { colors: [ { black, white , ... } ] ,

          lace_length: [ { 12, 13 , 14 } ] } 
         ]
}
这似乎是一种基于各种用户输入存储灵活的“列名”的明智方法,还是有更好的方法来处理这个问题


谢谢

我不能说我完全理解您的SQL示例。是否有外键,即与对象id相对应的外键

如果您的选项是多对多,我会这样设置:

{ _id: ObjectId() ,
  options: {
      colors: [ black, white , ... ],
      lace_length: [ 12, 13, 14 ]
  }
}
{ _id: ObjectId() ,
  options: {
      colors: [ black, white , ... ],
      lace_length: [ 12, 13, 14 ],
      upc: 1234567890
  }
}
如果某些选项只有一个值,则如下所示:

{ _id: ObjectId() ,
  options: {
      colors: [ black, white , ... ],
      lace_length: [ 12, 13, 14 ]
  }
}
{ _id: ObjectId() ,
  options: {
      colors: [ black, white , ... ],
      lace_length: [ 12, 13, 14 ],
      upc: 1234567890
  }
}

是的,存在与另一个表/集合中的id相对应的内容。谢谢,看来我当时走对了方向。