MongoDB 选择不同的和在哪里 [英] MongoDB select distinct and where

查看:33
本文介绍了MongoDB 选择不同的和在哪里的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我正在做一个选择不同的工作,但我还想添加另一个键.

So I'm doing a select distinct which works, but I also want to add another key.

$data = $this->db->command(array("distinct" => "scores","key"=>"target_user"));

我需要这样的东西:SELECT DISTINCT target_user FROM score where seen = 1

可以在 mongo 中完成吗?

Can it be done in mongo?

推荐答案

您可以使用不同的查询来做到以下几点:

You can do it as follows by using distinct query :

db.scores.distinct("target_user", {"seen":1})

使用聚合框架运行不同的查询如下所示.

Running distinct query using Aggregate Framework is shown below.

将以下记录插入到 MongoDB 中.

Inserted following records into MongoDB.

db.scores.insert({target_user:"a",seen:1, name:"name1"})
db.scores.insert({target_user:"a",seen:0, name:"name1"})
db.scores.insert({target_user:"b",seen:1, name:"name2"})
db.scores.insert({target_user:"c",seen:1, name:"name3"})
db.scores.insert({target_user:"d",seen:0, name:"name4"})

然后通过运行以下聚合查询,您可以找到不同的 target_user,其中 seen = 1.请注意,它还会返回 name 字段.

Then by running the following aggregate query you can find the distinct target_user's where seen = 1. Note that it will also return name field.

db.scores.aggregate(
{$match:{seen:1}},
{$group: {_id : "$target_user", name: {$first:"$name"}}},
{$group : {_id : "$_id", name: {$first:"$name"}}}
);

结果如下:

"result" : [
    {"_id" : "a","name" : "name1"},
    {"_id" : "b","name" : "name2"},
    {"_id" : "c","name" : "name3"}
]

这篇关于MongoDB 选择不同的和在哪里的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆