2

我在来自两个集合的文档中有一个名为 id(不是 _id)的字段。我需要将第一个集合的内容与第二个集合进行比较。基本上,我需要知道集合'A'中存在哪些具有给定值'id'的文档,而不是'B'。从 Collection A 构建 id 数组的最简单方法是什么,我可以使用它来执行以下操作。:

db.B.find({id:{$nin: array_of_ids_from_coll_A}})

请不要因为在这种情况下我使用“id”而不是“_id”而感到困惑。谢谢。

4

2 回答 2

1

A严格来说,这并不能回答“如何构建...到一个列表。

这对数据库有很多往返,所以不是很快,但很简单。此外,如果A包含大量元素,则 id 数组可能太大而无法将它们全部放入 中$nin,否则必须通过拆分 id 数组来解决。更糟糕的$nin是,无论如何索引都不是有效的。

于 2013-10-09T22:57:29.730 回答
0

我错误地假设函数“distinct”根据给定的“字段”返回了一组不同的文档。事实上,它返回一个不同值的数组,提供一个特定的字段。因此,我能够使用 db.A.distinct('id') 构建我正在寻找的数组。无论如何,感谢任何花时间阅读这个问题的人。

于 2013-10-09T22:57:21.600 回答