当我尝试向集合添加索引时
<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
是此集合的唯一索引
答案 0 :(得分:0)
我认为这里的答案是:不,mongo不存储类型信息。
原来我确实有一个包含数组属性的文档
问题在于$type
如何运作
"team_id" : ["T024F579X"],
中的team_id将被mongo读取为string
类型。
当应用于数组时,$ type匹配任何内部元素
意味着只有嵌套数组才会被读作类型array
。
查询集合中任何现有top level
数组的有效方法是使用$size
Mongo $size docs