我有存储在mongodb集合中的数据 - 页面。每个页面都有以下属性:
TypeError: $(...).get(...).show is not a function
http://www.ten103.com/javascript/global_desktop.js
Line 15
我在DB中存储了大约500页,性能对我来说不是很重要。
我需要在所有页面中找到共同内容。如果我这样做:
title - string
id - number
contents - it is an object with 3 attribute
contents.topic - string
contents.parentTopic - number
contents.text - string
像这样,我可以在所有正常工作的页面上获得通用内容。只要所有页面中至少有一个共同的“内容”,就是这样。
但我需要在所有页面中找到共同的子集。例如,找到第1-50页中常见的内容,可能是第45,59,79,123页中常见的另一个子集,...另一个可能在第450 - 459页中很常见
找到这些常见子集的更好的解决方案?它需要创建树吗?
感谢。
答案 0 :(得分:0)
这一切都取决于"其中"您认为属于"重复的属性"或至少"共同的#34;。
你可以做到
$pages->aggregate(
array(
'$group' => array(
'_id' => '$content',
'pages' => array( '$push' => '$id' ),
'count' => array( '$sum' => 1 )
)
)
);
您使用的客户端代码效率要高得多。
或者你甚至可以做到
$pages->aggregate(
array(
array(
'$project' => array(
'title' => 1,
'id' => 1,
'contents' => 1,
'types' => array( '$literal' => array( 'topic', 'parentTopic', 'text' ) )
)
),
array( '$unwind' => '$types' ),
array(
'$group' => array(
'_id' => array(
'type' => '$types',
'content' => array(
'$cond' => array(
array( '$eq' => array( '$types', 'topic' ) ),
'$content.topic',
array(
'$cond' => array(
array( '$eq' => array( '$types', 'parentTopic' ) ),
'$content.parentTopic',
'$content.text'
)
)
)
)
),
'pages' => array( '$push' => '$id' ),
'count' => array( '$sum' => 1 )
)
)
)
)
);
每个子键分组。
所有"分组"是一种“建筑物”的形式。但是,你在这里要求的并不是那么清楚。只是试图展示一些你似乎正在做的事情更有效率。