具有多条记录条件的MongoDB查询

时间:2013-08-11 07:57:13

标签: mongodb database-design

这可能是微不足道的,但我还没有想出办法。

说我在数据库中有以下记录:

{ A: 1, B: 2, C: "Red" }
{ A: 1, B: 2, C: "Blue"}
{ A: 1, B: 3, C: "Red" }

我希望使用{A: 1, C: "Red"}返回所有记录,但如果有多个记录具有相同的C: "Blue"值,则不希望返回B。因此对于上述记录,它只返回第3条记录。不会返回第一条记录,因为有两条记录具有相同的B值,其中一条记录的值为C: "Blue"

我只能想到通过对数据库的两个查询来执行此操作,即首先查询{A:1,C:“Red”},然后通过查询数据库中的所有元素进行检查。我想第二步可能实际上不只是一个查询。

我真的不想用{A: 1}查询。当然,我正在通过API完成所有这些,所以这样它将是一个数据库查询,但结果列表可能比我想要的大得多。

是否有一个查询可以通过1个数据库调用完成我想要的操作?感谢。

1 个答案:

答案 0 :(得分:2)

我不认为一个查询是可能的。但您可以使用aggregate获取所需的所有B,然后查询该B的数据库:

db.test1.aggregate(
    [
        {$group: {_id: "$B", count: {$sum:1}}},
        {$match: {count:1}}
    ]
)

将返回所有B,其中只有一个记录在你的收藏中。