这可能是微不足道的,但是我还没有找到一种方法来做到这一点。
说我在数据库中有以下记录:
{ 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
值的记录,则不返回。因此,对于以上记录,它将仅返回第三条记录。因为有两个记录具有相同的B值,并且其中一个具有值,所以不会返回第一条记录C: "Blue"
。
我只能想到通过对数据库的两次查询来做到这一点,即首先查询{A:1,C:“ Red”},然后通过查询数据库中的所有元素进行检查。我想第二步实际上可能不仅仅是1个查询。
我真的不想查询{A: 1}
。当然,我是通过API来完成所有这些工作的,因此,这将是一个数据库查询,但是结果列表可能比我想要的要大得多。
是否有一个查询可以仅通过1个数据库调用就能完成我想做的事情?谢谢。
我认为只有一个查询是不可能的。但是,您可以通过聚合获得所需的所有B ,然后查询该B的数据库:
db.test1.aggregate(
[
{$group: {_id: "$B", count: {$sum:1}}},
{$match: {count:1}}
]
)
将返回您所有B,而在您的收藏夹中只有一个记录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句