假设我在MongoDB中有一些集合,我希望得到这些单词的交集。
fruit db
fresh fruit | dried fruit |
-------------------------|-------------------------
{ "type": "apple" } { type: "apple" }
{ "type": "orange" } { type: "peach" }
{ "type": "peach" } { type: "pineapple" }
{ "type": "pear" } { type: "grape" }
{ "type": "watermelon" } { type: "mango" }
{ "type": "grape" } { type: "plum" }
从上面的例子可以看出,有新鲜和干果,但每个系列之间有类似的项目。也可能只有两个系列。
如何在这个数据库上运行一些查询,以便从每个集合中找到所有相同类型的水果。
因为苹果,桃子和葡萄都在这两个系列中,有没有办法提取这样的数据?
答案 0 :(得分:0)
您可以使用$lookup命令。要查找“freshFruit”和“driedFruit”系列中的常见水果,可以使用以下查询:
db.freshFruit.aggregate([
{
$lookup: {
from: "driedFruit",
localField: "type",
foreignField: "type",
as: "fruit"
}
},
{
$match: { "fruit": { $ne: [] } }
}
]);
答案 1 :(得分:0)
`
db.freshFruit.aggregate([
{
$lookup: {
from: "driedFruit",
localField: "type",
foreignField: "type",
as: "fruit"
}
},
{$match: { "fruit": { $ne: [] } }},
//Add another lookup and match to join another collection and at last use $ group stage
{ $group: { "_id": null,fruits : {$push :$type}}}
]);
` 在水果中,你将获得所有收藏品中存在的所有水果