Mongo组查询 - 过滤结果

时间:2012-06-29 02:08:51

标签: php mongodb mongodb-query nosql

我的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开始...

由于

1 个答案:

答案 0 :(得分:1)

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

您需要在客户端过滤掉它。我怀疑这是你想要的,因为你希望以某种方式对数量进行排序(我知道我愿意)。所以你需要通过每个文件取出计数字段。

我相信聚合框架会更好:

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

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

希望这有帮助,