我的mongo组查询中存在问题:(这是PHP代码)
$conditions = array(
'user' => array(
'$ne' => $uid
)
);
$group = $db->words->group(
array("word" => true),
array("count" => 0),
"function(obj, prev) { prev.count += 1 }",
$conditions
);
想象一下单词集合中的以下文档
{
_id: 3,
word: "hello",
user: "test"
}
{
_id: 2,
word: "world",
user: ""
}
{
_id: 1,
word: "test",
user: ""
}
我需要从group命令返回的内容是:
{
word: "world",
count: 1
}
我只需要在任何文档中都没有用户关联的单词。目前我得到:
{
word: "test",
count: 2
}
{
word: "world",
count: 1
}
这有意义吗?我还是以mongo开始...
由于
答案 0 :(得分:1)
我认为您不能直接在组()中过滤计数。
您需要在客户端过滤掉它。我怀疑这是你想要的,因为你希望以某种方式对数量进行排序(我知道我愿意)。所以你需要通过每个文件取出计数字段。
我相信聚合框架会更好:
http://docs.mongodb.org/manual/reference/aggregation/#_S_group
您可以将它用作管道,然后在$ sort或其他任何内容后替换另一个管道中的字段。
希望这有帮助,