我的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或其他任何内容之后替换另一个管道中的字段。
希望这有帮助,