Mongo 组查询 - 筛选结果


Mongo group query - filter results

我的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: ""
}

我需要从组命令返回的是:

{
    word: "world",
    count: 1
    }

我只需要在任何文档中没有关联的用户的单词。目前我得到:

{
    word: "test",
    count: 2
    }
{
    word: "world",
    count: 1
    }

这有意义吗?我还在从蒙戈开始...

谢谢

我认为您不能直接在 group() 中过滤计数。

您需要将其过滤掉客户端。我怀疑无论如何这都是您想要的,因为您希望以一种或另一种方式对计数进行排序(我知道我会)。所以是的,您需要浏览每个文档,取出计数字段。

我相信聚合框架会更好:

http://docs.mongodb.org/manual/reference/aggregation/#_S_group

您可以将其用作管道,然后在$sort或其他任何内容之后替换另一个管道中的字段。

希望这有帮助,