何时使用数组或不使用它们在mongodb中

时间:2016-08-01 14:08:01

标签: mongodb

我正在使用Symfony2 / mongodb中的第一个应用程序,我必须存储文章,这些文章有标签,关键字和相关图像。目前我正在存储这些信息:

"category" : [
    "category1",
    " category2",
    " category3"
],

但我也看到一些例子说要做

"category" : "category1, category2, category3",

所以我猜哪一个是最好的方法呢?

2 个答案:

答案 0 :(得分:0)

如果您使用数组,那么您将具有以下优势:

  • 您可以通过索引直接访问每个项目。
  • 您可以使用$ in,$ nin和$ elemMatch
  • 等运算符直接在阵列上执行查询

如果您使用字符串,则必须:

  • ,拆分以进行任何循环
  • 基于用户文本的查询搜索,这很慢

关于MongoDB文档中的数组,您需要记住的一件事是它不应该太大。数组可能变得非常大,如果它将文档的大小推到16 MB以上,则会导致问题,因为16 MB是单个文档的maximum allowed size

在该用例中,您可以将数组的内容拆分为单独的集合并创建引用。

答案 1 :(得分:0)

当你真正需要一个数组时,使用字符串是一个非常糟糕的主意。如果您想按标签搜索文档,肯定需要一个数组。但是当你需要TOPLEVEL_BINDING.receiver时,字符串是有用的(例如,用句子搜索一个单词形式)。