MongoDB是否存储有关文档属性类型的任何信息?

时间:2017-04-11 15:20:17

标签: mongodb indexing types

当我尝试向集合添加索引时 <collection>.createIndex({ reaction: 1, team_id: 1 }, { unique: true })
我得到错误10088:无法索引并行数组。

但我在集合中没有任何数组。

当我使用{$ type:'array'}搜索属性时,我显示零文档 当我搜索{$ type:'string'}时,会返回所有文档。

以前这些属性是数组但是已经被转换了 mongodb存储属性类型信息吗?

// Original document
{
  "value" : 5,
  "team_id" : ["T024F579X"],
  "reaction" : ["star2"],
}

// new converted document
{
  "value" : 5,
  "team_id" : "T024F579X",
  "reaction" : "star2",
}

mongod version: 3.2.11 (MMAPv1)
_id是此集合的唯一索引

1 个答案:

答案 0 :(得分:0)

认为这里的答案是:不,mongo不存储类型信息。

原来我确实有一个包含数组属性的文档 问题在于$type如何运作 "team_id" : ["T024F579X"],中的team_id将被mongo读取为string类型。

from the mongo docs

  

当应用于数组时,$ type匹配任何内部元素

意味着只有嵌套数组才会被读作类型array

查询集合中任何现有top level数组的有效方法是使用$size Mongo $size docs