在子文档mongoDb中创建Multikey

时间:2015-12-21 20:37:26

标签: mongodb aggregation-framework

我有这样的结构

{
   "myid" : "x47ccv1",
   "info" : [ 
       {
           "id" : 0.0000000000000000,           
           "op" : [ 
               "string", 
               "string", 
               "string", 
               "string", 
               "string", 

           ],
           "dc" : [ 
               "string", 
               "string", 
               "string", 
               "string", 

           ],
           "lt" : [ 
               ""string",
               "string", 
               "string", 
               "string", 
           ],
           "enable" : true
       },
       {
           "id" : 1.0000000000000000,           
           "op" : [ 
               "string", 
               "string", 
               "string", 
               "string", 
               "string", 

           ],
           "dc" : [ 
               "string", 
               "string", 
               "string", 
               "string", 

           ],
           "lt" : [ 
               ""string",
               "string", 
               "string", 
               "string", 
           ],
           "enable" : false
       },
       {
           "id" : 2.0000000000000000,           
           "op" : [ 
               "string", 
               "string", 
               "string", 
               "string", 
               "string", 

           ],
           "dc" : [ 
               "string", 
               "string", 
               "string", 
               "string", 

           ],
           "lt" : [ 
               ""string",
               "string", 
               "string", 
               "string", 
           ],
           "enable" : true
       }
       ...and so on
   ]
}

我希望例如在enable为false时获取所有元素dc字符串或仅包含dc字符串。 我创建了一个聚合查询,如:

db.coll.aggregate([

{
    $unwind:"$info"
},
{
    $match:{"info.enable":false}
},{
    $group:{
        _id:null,
        "info":{$push:"$steps.dc"},
        "tot":{$sum:1}
    }
}

])

它工作但很慢(7秒),因为我有120000个文件。 我也尝试创建关键信息,但我有这个错误

    "err" : "Btree::insert: key too large to index ....

我也尝试在db.coll.ensureIndex上创建密钥({" info.success":1}),但我有相同的结果(7秒)

我是否更改了结构,还是可以优化此查询?

0 个答案:

没有答案