gpt4 book ai didi

MongoDB - 我如何找到另一个集合中的文档未引用的所有文档

转载 作者:IT老高 更新时间:2023-10-28 13:32:40 28 4
gpt4 key购买 nike

所以问题来了:

我在集合 A 中有文档,当它第一次创建时,它没有被任何其他文档引用。在某个时候,集合 B 中的一个文档将被创建,它将引用集合 A 中文档的 ObjectId。

在集合 A 中查找集合 B 中的 I 文档未引用的所有文档的最佳方法是什么?

我了解 MongoDB 不支持连接,但我想知道除了从集合 B 获取所有引用的 ObjectId 并在集合 A 中查找不在该列表中的文档之外,是否有解决此问题的方法,因为此解决方案可能不能很好地扩展。

我可以将集合 A 中的文档嵌入到集合 B 中的文档中,然后将其从集合 A 中删除吗?这是最好的解决方案吗?

感谢您的帮助和评论。

最佳答案

在 MongoDB 3.2 中,添加了 $lookup运算符使这成为可能:

db.a.aggregate(
[
{
$lookup: {
from: "b", <-- secondary collection name containing references to _id of 'a'
localField: "_id", <-- the _id field of the 'a' collection
foreignField: "a_id", <-- the referencing field of the 'b' collection
as: "references"
}
},
{
$match: {
references: []
}
}
]);

上述查询将返回集合 a 中没有在集合 b 中引用的所有文档。

不过,请注意这一点。大型集合的性能可能会成为问题。


关于MongoDB - 我如何找到另一个集合中的文档未引用的所有文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10712751/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com