我试图找到使用id字段在我的分片收集的重复,这是这种模式的失败 -的MongoDB - 骨料与内存错误
"id" : {
"idInner" : {
"k1" : "v1",
"k2" : "v2",
"k3" : "v3",
"k4" : "v4"
}
}
我用下面的查询,但收到了“异常:超出了$ group的内存限制,但不允许外部排序。通过allowDiskUse:true来选择加入。“错误,即使我在查询中使用了“allowDiskUse:true”。
db.collection.aggregate([
{ $group: {
_id: { id: "$id" },
uniqueIds: { $addToSet: "$_id" },
count: { $sum: 1 }
} },
{ $match: {
count: { $gte: 2 }
} },
{ $sort : { count : -1} },
{ $limit : 10 }
],
{
allowDiskUse : true
});
是否有另一种方法来得到我想要的,或者我应该通过上述查询的其他方法?谢谢。
'_id'字段本身始终索引一个“唯一”约束。它**不能**包含重复项。 –
这不是“_id”字段,在我的情况下,我让mongo默认填充。我有我自己的“id”(没有下划线),它包含我的密钥。 – user3723491
你真的需要在你的组中使用'uniqueIds:{$ addToSet:“$ _id”}'吗?这可能会缓解一些内存问题。 – ThrowsException