缩放器值与MongoDB中的数组

时间:2013-02-09 15:14:29

标签: mongodb

考虑以下两个集合并遵循注释。您认为哪一个更合适?

// #1
{x:'a'}
{x:'b'}
{x:'c'}
{x:['d','e']}
{x:'f'}

//#2
{x:['a']}
{x:['b']}
{x:['c']}
{x:['d','e']}
{x:['f']}

一些事实:

  • 字段x通常只有一个值(95%),有些时候(5%)。
  • 在查询时,Mongodb的行为与{x:['a']}类似{x:'a'}。
  • MongoVUE直接显示#1中的缩放器值,并显示#2的Array[0]
  • 使用#1,当您想要追加新值时,必须投射数据类型
  • #1在某些CRUD操作中可能会快一点(?)

2 个答案:

答案 0 :(得分:1)

为了放大@ ZaidMasud的观点,我建议保留sclars或阵列,而不是两者兼而有之。如果你有不可避免的理由同时拥有(传统数据),那么我建议你非常熟悉Mongo查询如何使用数组;乍一看它并不直观。请参阅示例this puzzler

答案 1 :(得分:0)

从架构设计的角度来看,即使MongoDB允许您为键值对存储不同的数据类型,但这样做并不一定是个好主意。如果没有令人信服的理由使用不同的数据类型,通常最好对给定的键/值对使用相同的数据类型。

所以考虑到这个推理,我更喜欢#2。在这种情况下,应用程序代码通常会更简单。此外,如果您需要使用Aggregation Framework,您会发现统一类型很有用。