MongoDB从多个集合中获取唯一的单词集

时间:2016-11-19 05:32:33

标签: mongodb database nosql

假设我在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"  }
从上面的例子可以看出,有新鲜和干果,但每个系列之间有类似的项目。也可能只有两个系列。

如何在这个数据库上运行一些查询,以便从每个集合中找到所有相同类型的水果。

因为苹果,桃子和葡萄都在这两个系列中,有没有办法提取这样的数据?

2 个答案:

答案 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}}}
]);

` 在水果中,你将获得所有收藏品中存在的所有水果